从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器, 也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。 如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后, 先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致, 服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。 客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。 但是整个登录的过程可能需要10秒。
安装过程:
1.服务器端的配置:Ubuntu默认已经安装了sshd,只需要配置即可/etc/ssh/sshd_config
2.客户端:
Windows下我用的是SSH Secure Shell Client 3.2.9(或putty)
Ubuntu下无需安装,直接使用ssh
-----------------------------------------------------------
第一次联机会在客户端生成公钥文件:~/.ssh/ know_host
安全方面:
设置/etc/ssh/sshd_config:
取消root登陆:PermitRootLogin no
不允许空密码:PermitEmptyPasswords no
不允许某用户或群组登陆:DenyUsers, DenyGroups.
/etc/hosts.allow(deny)
Iptables
如果server系统有改变,导致发来的public key与记录的不同就会出错,此时删除原文件即可
文件传送功能:
sftp可以很好的替代ftp,同样可以用命令行,也可以用fillzilla等软件联机。如右图,第一次提示建立密钥缓存文件.
Windows下的命令行与图形界面登陆
Ubuntu下联机界面