目前在互联网上使用的诸如FTP、Telnet、POP等服务在本质上都是不安全的,它们在网络上使用明文传送口令和数据,黑客非常容易就可以截获这些口令和数据,从而破坏数据的机密性和完整性。本文将介绍如何使用Linux下的SSH软件在不安全的网络环境下通过密码机制来保证数据传输的安全。
SSH的英文全称是Secure SHell。通过使用SSH,用户可以把所有传输的数据进行加密,这样即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。另外,传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP提供一个安全的“传输通道”。在不安全的网路通信环境中,它提供了很强的验证(authentication)机制与非常安全的通信环境。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是: 1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
SSH提供两种级别的安全验证: 一是基于口令的安全验证。只要用户知道自己账号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证用户正在连接的服务器就是用户想连接的服务器。可能会有别的服务器在冒充真正的服务器,这存在着潜在的威胁。
二是基于密匙的安全验证。需要依靠密匙,也就是用户必须为自己创建一对公匙/密钥对,并把公用密匙放在需要访问的服务器上。如果需要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求使用用户的密匙进行安全验证。服务器收到请求之后,先在服务器上用户的主目录下找到该用户的公用密匙,然后把它和用户发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用用户的私人密匙解密再把它发送给服务器。
安装与启动SSH
在Red Hat Linux 7以及其上的发行版本中已经包含了与OpenSSH相关的软件包,如果没有,则可以从OpenSSH的主页下载RPM包自行安装,OpenSSH的主页是地址是: 。主要安装如下几个包: openssh-3.5p1-6、openssh-server-3.5p1-6、openssh-askpass-gnome-3.5p1-6、openssh-clients-3.5p1-6、openssh-askpass-3.5p1-6。使用如下命令进行安装:
首先查询系统是否安装了上述软件包。
#rpm -qa |grep openssh
如果没有安装则执行如下命令。
#rpm -ivh openssh-3.5p1-6
#rpm -ivh openssh-server-3.5p1-6
#rpm -ivh openssh-askpass-gnome-3.5p1-6
#rpm -ivh openssh-clients-3.5p1-6
#rpm -ivh openssh-askpass-3.5p1-6
安装完成之后,可以使用下述两个命令中的任一个进行启动。
#service sshd start
#/etc/rc.d/initd/sshd start
另外,如果想在系统启动时就自动运行该服务,那么需要使用setup命令,在网络服务配置的选项中,选中sshd守护进程即可。
安装启动完OpenSSH之后,用下面命令测试一下。
ssh -l [username] [address of the remote host]
如果OpenSSH工作正常,将会看到下面的提示信息:
The authenticity of host [hostname] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?