超载
在局域网乃至互联网上,主机与主机之间的通信都是非加密的状态,属于明文通信。所谓明文通信,就是任何登录、操作信息,都未经加密处理,这就带来了极大的不安全因素。在SSH出现之前,其实已经出现了一些协议,例如rlogin、Telnet、FT或者rsh之类的,但是它们的安全性远远不够,这就催生了SSH(图1)。
1995年第一个SSH程序出现,称之为“secure shell”,它将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。简单说,SSH是一种网络协议,用于计算机之间的加密登录。除此之外,SSH也支持隧道协议、端口映射和X11连接。借助SFTP或SCP协议,SSH还可以传输文件。
SSH协议框架中最主要的部分是三个协议:
1、传输层协议(The Transport Layer Protocol):传输层协议提供服务器认证,数据机密性,信息完整性等的支持。
2、用户认证协议(The User Authentication Protocol):用户认证协议为服务器提供客户端的身份鉴别。
3、连接协议(The Connection Protocol):连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。
SSH最重要的功能當然是主机与主机之间的通讯,但最大的区别就在于通讯过程中的加密。所以,SSH的工作原理也有所区别:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录(图2)。
详细解析它的工作原理,就是服务器启动的时候自己产生一个密钥(76 8 b i t公钥),本地的S S H客户端发送连接请求到S S H服务器,服务器检查连接点客户端发送的数据和I P地址,确认合法后发送密钥( 76 8 b i ts)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit)并发回给服务器端,从而建立连接。在这种机制之下的连接通讯,让SSH具备了高可靠性、高安全性(相对而言)。
具体来说,在使用S SH登录工具时,S SH客户端的登录方式是这样的(图3):
ssh user@remote -p port
其中,“user”是你在远程机器上的用户名,如果不指定的话默认为当前用户;“r emot e”则是远程机器的地址,可以是I P 地址(局域网)、域名(局域网、广域网);最后的“por t”是指SSH服务器端监听端口,如果不指定的话就为默认值22(SSH协议专用端口)。这样的登录命令执行后,再依据提示确认公钥、输入私钥就可以了(图4)。
从安全性角度上看这样的“双保险”可以最大限度确保SSH的安全性连接,但是它也造成了不必要的麻烦——验证公钥,输入私钥这样繁琐的操作。其实,这些也可以通过SSH的客户端软件实现免密钥登录的。我们就以Windows平台下的Putty(SSH登录工具)举例说明(图5)。
除了打开putty的界面按照提示设置登录SSH之外,我们还可以使用快捷方式的办法来实现快捷登录,方法是新建一个Putty的快捷方式,然后右键单击该快捷方式,然后选择“属性”,在“目标”栏中我们添加“ -ssh -l root -P 22 123.123.123.123 -pw 456”。注意,首先这个参数添加时要在putty.exe后连接一个空格,其次,“22”为端口号,如果目标电脑的SSH为特殊指定的端口,那么这里也要进行相应修改;接下来是IP地址或域名,根据实际情况修改即可;最后就是密码-pw后,输入目标电脑的SSH密码就行了(图6)。
设置完毕点击确定,并双击这个快捷方式,它便可以自动连接到指定好的目标主机SSH上,再确认保存一下公钥,日后再使用就完全不需要输入用户名密码了,非常方便。当然,这只是SSH最基本的登录方法,具体要实现何种操作,则是根据你输入的命令来决定的,有兴趣的读者不妨多多摸索。