Linux提供了多种方式让用户进行远程管理,如Telnet,它的基本应用就是提供远程管理,共享远程系统中的资源。Telnet使用户坐在自己的电脑前通过网络进入另一台电脑,并把用户输入的每个字符传递给主机。再将主机输出的每个信息回显在屏幕上,这样的连接可以发生在同一个房间,也可以发生在地球的两端。但Telnet服务在本质上是不安全的,原因在于在Telnet整个通信过程中采用明文传送数据,在当今的网络环境下这样的操作如果发现在Internet上无异于自杀。
SSH(Secure Shell)则不同,它是以远程联机服务方式操作服务器时的较为安全的解决方案,最初由芬兰一家公司开发完成,但由于版权等相关问题,目前大多使用OpenSSH来代替。它可以将所有传输的数据进行加密,这样“中间人”功能方法就不太可能成功。而且SSH在传输数据的过程中会对数据进行压缩,这样也可以加快数据的传输速度。总之SSH的功能很好、很强大,正在逐渐取代Telnet,成为远程登录主要选择。
SSH同Telnet相同采用客户机/服务器的工作方式。目前主要有二个互不兼容的版本,分别是1.x及2.x。而OpenSSH 2.x同时支持1.x及2.x。
下面将以RHEL 5为例讲述SSH服务在远程登录中的应用:
在RHEL 5中默认情况下已经安装并已开启SSH,但在使用前最好还是检查进程及端口是否工作正常。
在实验过程中,将用户将在football.example.zqin上通过SSH远程登录到golf.example.zqin上。在讲述配置过程前先介绍几个在SSH中常用的命令:
ssh [user@]hostname [command]
远程连接到指定服务器
◆ [user@]:远程计算机的用户名,如不输入表示使用root进行连接
◆ [command]:连接成功后直接执行的命令
scp [user@]host:/path [-rpC]
文件在ssh客户端与服务器端之间复制
◆-r:递归
◆ -p:保留原文件权限
◆ -C:传输中压缩数据
rsync srcfile host:/path
在客户端与服务器间同步文件,这个命令是一次性的,如果需要定时执行,要使用crontab。在同步是只从srcfile到host:/path。
一、通过SSH远程登录
1:通过ssh命令连接远程计算机,未输入用户名则默认使用root。
2:如果是第一次连接到远程计算机,由于OpenSSH不知道该计算机所以出现警告提示此处输入yes,OpenSSH会将这台计算机识别标记加入~/.ssh/know_hosts文件中,第二次连接时就不会出现警告。
3:输入远程计算机root用户口令。
4:已成功连接到远程计算机,此时输入的所有命令将在远程计算机中执行,可通过exit命令退出。
不知道是OpenSSH有Bug还是其它原因,有时一切配置正常但总无法连接到远程计算机,此时可将客户端~/.ssh里面内容删除后再试。
二、通过密钥方式远程登录
在使用ssh连接到远程计算机时每次需要输入远程计算机的密码,如企业中有多台服务器需要通过ssh进行管理时这样可能比较麻烦。可以通过使用密钥文件的方式,先在本机生成一对密钥文件,再将公钥文件复制到远程计算机,只要私钥文件在本机那样连接远程计算机时不需要输入密码。
当然为了安全,可以在生成密钥对时对私钥文件设置密码,这样连接到远程计算机时输入的密码就是私钥文件的密码,而不是远程计算机的用户密码。为了方便可以将私钥文件的密码保存在当前计算机,这样连接到远程计算机时什么密码都不需要输入,但私钥文件如果复制到其它计算机时还是需要输入私钥文件的密码。具体配置步骤如下:
◆ 生成密钥对文件
1:生成密钥对。
2:输入私钥文件的名称,直接回车使用默认名称。
3:输入私钥文件密码。
4:完成后在用户家目录.ssh中会自动生成密钥对文件,id_rsa为私钥文件,id_rsa.pub为公钥文件。
◆ 将公钥复制到远程计算机
1:ssh-cop-id命令会将指定的公钥文件复制到远程计算机。
2:输入远程计算机root用户密码。
3:公钥文件被复制到远程计算机后,会自动更名为authorized_keys。
◆ 再次连接到服务器
此处输入的是私钥文件密码,而不是远程计算机root用户的密码。
◆ 将私钥文件密码保存到本机
1:启用代理功能。
2:保存私钥口令。
3:输入私钥口令。
当完成上述步骤后,再次连接到远程计算机时无需输入任何密码。