SSH(Secure Shell)是标准的网络协议,主要用于实现字符界面的远程登录管理,以及远程文件复制的功能。SSH协议对通讯网络传输的数据进行加密处理,其中也包括了用户登录时输入的用户口令。与早期的telnet(远程登录),rsh(Remote Shell,远程执行命令),rcp(Remote Fire Copy,远程文件复制)等相比,SSH协议提供了更好的安全性。
OpenSSH是实现SSH协议的开源软件项目,适用于各类Unix或者Linux系统平台。关于OpenSSH项目的更多内容可以访问其官方网站。
1.1 OpenSSH服务端的安全控制
在RHEL5系统中,OpenSSH服务器和客户端的相关软件都是默认安装的,并已将sshd添加为标准的系统服务。运行"service sshd start"命令即可按缺省的配置启动sshd服务,包括root在内的大部分用户(只要有能执行命令的有效Shell)都可以远程登录系统。
1.2 用户的远程登录控制
sshd服务的配置文件默认位于"/etc/ssh/sshd_config",适当调整文件中的配置项,可以进一步,增强sshd远程登录服务的安全性。修改配置之后,应该执行"service sshd reload",使新的设置生效。
关于/etc/ssh/sshd_config配置文件的帮助信息可以使用"man sshd_config"命令进行查看,以下是调整sshd_config配置文件内容的几个实例。
vi /etc/ssh/sshd_config
1.3 修改监听端口号(默认为22),并限制只在一个IP地址上提供服务。
Port 2345
ListenAddress 192.168.2.1
1.4 禁止root用户和密码为空的用户远程登录系统。
PermitRootLogin no
PermitEmptyPasswords no
当root用户被禁止登录时,可以先使用普通用户账号进入系统,在需要执行管理任务时在使用"su -"的方式切换为root,或者在服务器中配置sudo以执行部分管理命令。
1.5 限制用户登录验证过程的时间(默认为俩分钟)及最大重试次数(六次),若超过限制后仍未能登录则将断开连接。
LoginGraceTime 2m
MaxAuthTries 6
1.6 拒绝用户zhangsan,lisi远程登录系统,其他允许登录。
[root@localhost]#vi /etc/ssh/sshd_config
DenyUsers zhangsan lisi
1.7 允许用户jerry远程登录系统,允许用户admin从主机61.23.24.25远程登录系统,其他用户均拒绝(不要同时使用AllowUsers和DenyUsers配置)
[root@localhost]#vi /etc/ssh/sshd_config
AllowUsers jerry admin@61.23.24.25
2 身份验证方式
OpenSSH服务默认采用以下俩种方式对远程登录的用户进行身份验证。
密码验证。只需使用服务器中系统用户的账户和密码即可通过验证,这种方式使用最为简单易用。但是从用户角度来说不能保证正在连接的服务器就是他想连接的服务器(可能是冒充的),从服务器的角度来说对暴力破解密码的防护能力较弱。
秘钥对验证。需要提供相匹配对的秘钥才能通过验证。通常由客户端的用户为自己创建一对秘钥文件(即公钥和私钥),然后将公钥文件放在需要访问的SSH服务器上。当远程登录服务器时,系统将结合公私钥文件进行加密/解密相关联验证,增强了用户登录及数据传递过程的安全性。用户还可以在客户端为自己的私钥文件设置密码进行保护。
如果对某一个用户两种验证方式都可用时,服务器默认将优先使用秘钥对验证。对于安全性的要求较高的服务器,可用禁用普通的密码验证,只对特定管理员用户使用秘钥对验证。
2.1 修改sshd_config配置文件,禁用密码验证,启用秘钥对验证(缺省为启用)
[root@localhost]#vi /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedkeysFile ./ssh/authorized_keys //指定保存各用户公钥内容的数据的文件位置
[root@localhost]#service sshd restart
使用密钥对验证方式的SSH远程登录,还需要客户端的用户创建密钥文件对,并将公钥文件的内容提供给服务器。具体的实现过程将在下面介绍。
3 SSH客户端应用
一般来说,只要支持SSH协议的客户端软件都可以与OpenSSH服务器进行通讯。在Linux系统平台中
通常直接使用ssh命令程序作为远程登录工具,还可以使用scp,sftp命令程序远程传输文件。在RHEL5系统中,ssh,scp,sftp 命令工具均由Openssh-clients-4.3p2-16.e15软件提供。而在Windows系统平台中通常使用图像化的SSH客户端软件。
3.1 命令行客户端工具
ssh远程登录
使用ssh命令远程登录服务器时,最典型的命令格式如下:
ssh username@sshserver
其中,sshserver表示需要登录到的SSH服务器的地址,可以是主机名或者IP地址;而username表示的是用于登录的用户账号,该账号应该是SSH服务器中的系统用户账号。用户名与服务器地址之间使用"@"符号进行分隔;当用户第一次登录SSH服务器时,必须接收服务器发来的RSA密钥(根据提示输入yes)之后才能继续验证。接收的密钥信息将保存到"~/.ssh/known_hosts"文件中。
推荐阅读:
Ubuntu下SSH安装或设置
SUSE启用SSH和FTP