telnet :远程登陆 TCP/23 

        远程认证是明文的 ;数据传输是明文的;不实用

ssh:Secure SHell TCP/22    协议 v1 v2  v1基本不使用的 实现了将认证过程加密

Openssh:是ssh的开源版 ssh不仅是一个软件,也是一种协议


ssh加密认证的机制

    基于口令:默认为口令

    基于密钥:事先在服务器端的用户里放入客户端的公钥,然后链接过来的时候对暗号

netstat -tnl  查看服务器端打开了等待别人访问的服务 LISTEN监听

ssh 和sshd的配置文件都在

                   /etc/ssh/ssh_config  客户端的配置文件

                   /etc/sshd_config     服务器端的配置文件

vim sshd_config #后面有空格是注释,没空格是选项;去掉#就是启用,加上#就是关闭

例如:里面可以修改服务器端口号

例如:ListenAddress 192.168.9.112  只在112这台机器上提供服务

例如:PermitRootLogin no 不允许管理员直接登陆

例如:MaxAuthTries 6 输入错误密码超过6次,会提示等一会儿再输入

例如:AuthorizedKeyFile   .ssh/authorized_keys  把客户端生成的公钥放在这个目录下面,就可以实现基于密钥加密认证

最后要service sshd restart /reload


客户端应用:

    ssh :ssh -l root@172.16.0.1 ‘ifconfig’不登陆该主机,只返回命令执行结果

基于密钥认证怎样来实现:

   一台主机为客户端 (基于某个用户实现)

   1、生成一对密钥  

        ssh-keygen -t指定加密算法     rsa 或者dsa

   2、将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中

     使用文件传输工具,将公钥传输过去用 ssh-copy-id或者scp

   3、测试登陆

  scp:基于ssh的远程复制命令,可以实现在主机之间传输数据

     -r  复制目录需要用-r递归

 例:把远程的文件复制到本地当前目录下:站在1上

       scp root@192.168.9.1:/etc/fstab ./

 例:把本地文件复制到远程主机上去:站在1上

       scp fstab root@192.168.9.2:/root


实验:两台主机间基于密钥认证

1、rm -rf .ssh/*   9.1删除原有密钥文件

2、ssh-keygen -t rsa -f .ssh/id_rsa 生成密钥文件保存在/ssh下面叫id_rsa

3、连输入两次密码  自动生成一对密码

在第二步后面加-N ‘可以指定密码’

4、将自己的公钥传输到另一台主机的.ssh/id_rsa

   方法一:ssh-copy-id -i .ssh/id_rsa.pub root@192.168.9.2  他能自动追加到9.2的.ssh/authorized_keys的尾部

           下次链接9.2的时候 自动登陆

   方法二:scp 先复制过去 然后追加>>到.ssh/authorized_keys的尾部    


还可以配置双机互信



sftp:既是客户端又是服务器端

   实例:从9.2下载文件到9.1

  1、sftp root@192.168.9.2 

  2、get下载一个文件到本地   mget下载多个文件到本地



服务器安全总结:

    经常换密码

    使用非默认端口

    限制登陆客户端地址

    禁止管理员直接登陆

    仅允许有限用户登录

    使用基于密钥的认证

    不要使用协议版本1


ssh 192.168.9.1 8092