Linux操作系统服务器SSH方式远程管理配置
2011-03-19孔祥真徐小龙邢宏健
孔祥真 徐小龙 邢宏健
曲阜师范大学计算机科学学院 山东 276826
0 引言
最初SSH是由芬兰的一家公司在1995年开发的,目前SSH协议已经经历了SSH 1和SSH 2两个版本,它们使用了不同的协议来实现,二者互不兼容。SSH 2不管在安全、功能上还是在性能上都比SSH 1有优势,所以目前被广泛使用的是 SSH2。但是因为受版权和加密算法的限制,后来很多系统都采用了OpenSSH。OpenSSH完全实现了SSH协议,而且开放代码,移植性好,因此很快流行起来,自 2005年以来一直是SSH领域的主流软件。
1 架设SSH服务器
1.1 SSH服务的安装与配置
默认情况下 Red Hat Enterprise Linux安装程序会将OpenSSH服务和客户程序安装在系统上。可使用下面的命令检查系统是否已经安装了 OpenSSH服务或查看已经安装了何种版本。rpm -q openssh-server如果系统还未安装OpenSSH服务,在Red Hat Enterprise Linux 5下安装OpenSSH服务器可以有两种方式,一种是源代码方式安装,一种是RPM软件包方式安装。源代码可以从 http://download.chinaunix.net/ download/0008000/7713.shtml处下载,目前最新的版本是5.3p1版,文件名是openssh-5.3p1.tar.gz。RHEL 5自带的OpenSSH版本是4.3p2版,文件名是openssh-server-4.3p2-16.el5,在发行版的第2张盘上。或将安装盘放入光驱,加载光驱后在光盘的 Server目录下找到 OpenSSH服务的 RPM安装文件openssh-server-4.3p2-16.el5.i386.rpm,然后使用下面的命令安装OpenSSH服务。rpm -ivh /mnt/Server/openssh-server-4.3p2-16. el5.i386.rpm,配置SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。
1.2 启动和停止SSH服务
(1)启动SSH服务的命令
/etc/init.d/sshd start
(2)停止SSH服务的命令
/etc/init.d/sshd stop
(3)重新启动SSH服务的命令
/etc/init.d/sshd restart
(4)设置自动运行SSH服务
为了让系统每次启动时自动运行SSH服务,还可以将它设置为自启动。执行“ntsysv”命令启动服务配置程序,在出现的对话框中找到“sshd”服务,然后在其前面加上星号(*),选择“确定”即可。
1.3 SSH客户端的使用
(1)基于Windows平台
第一步:获取PuTTY程序
Windows下有许多 SSH的客户程序,推荐使用免费的PuTTY程序 。下载地址http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
第二步:连接SSH服务器
运行下载的 putty.exe文件,在 PuTTY程序主界面的“Host Name”中输入服务器的IP地址或域名,在“Protocol”中选择“SSH”选项,然后单击“Open”按钮连接。
如果是第一次连接到某台服务器,由于服务器公钥还没有在注册表中缓存,PuTTY程序会出现警告信息并显示服务器的指纹信息。
第三步:在远程系统上工作
如果PuTTY成功地连接到SSH服务器,就会显示登录信息并提示用户输入用户名和口令。如果用户名和口令输入正确,就能成功登录并在远程系统上工作了。
(2)基于Linux平台
在 Linux平台下可以使用 OpenSSH 的客户程序openssh-clients来连接SSH服务器。Red Hat Enterprise Linux默认已经安装SSH客户程序,可使用下面命令检查系统是否已经安装了SSH客户程序或查看已经安装了何种版本。rpm -q openssh-clients,如果系统还未安装SSH客户程序,可将Red Hat Enterprise Linux 5第一张安装盘放入光驱,加载光驱后在光盘的Server目录下找到SSH客户程序的RPM安装包文件 openssh-clients-4.3p2-16.el5.i386.rpm,然后使用下面的命令安装SSH客户程序。rpm-ivh /mnt/Server/openssh-clients-4.3p2-16.el5.i386.rpm 安装好openssh-clients程序后,可以直接使用ssh命令登录到SSH服务器。命令的格式为:ssh 服务器的IP地址或域名。
1.4 公钥认证原理
首先由用户生成一对密钥,然后将公钥保存在SSH服务器用户主目录下.ssh子目录中的 authorized_keys文件里(如/root/.ssh/authorized_keys),私钥保存在本地计算机中。当用户登录时,服务器检查authorized_keys文件的公钥是否与用户的私钥对应。如果相符则允许用户登录,否则拒绝用户的登录请求。编辑文件/etc/ssh/sshd_config,找到语句“Password Authentication yes”,并将语句改为“PasswordAuthentication no”。
1.4.1 在putty中启用公钥认证
第一步:获取 PuTTYgen程序。到 http://www.chiark. greenend.org.uk/~sgtatham/putty/download.html下载产生密钥的程序 Puttygen.exe,运行下载的 Puttygen.exe文件,在PuTTYgen程序主界面中的“Type of key generate:”,选择加密的算法,在“Number of bits in a generated key:”中输入加密的位数,推荐使用默认的1024位SSH2 RSA加密,然后单击“Generate”按钮开始生成密钥。
第二步:在密钥产生的过程中,为了生成一些随机的数据,应在程序的窗口内随意移动鼠标(否则程序进度条不会改变)。密钥生成后,出于安全性的考虑,程序会提示输入保护私钥的口令短语Key passphrase。
第三步:保存密钥。口令短语用于保护私钥。如果入侵者窃取了私钥但没有口令短语也不能使用该私钥,如果不想使用口令短语保护,只需将该项留空即可,最后分别单击“Save public key”和“Save private key”按钮将公钥和私钥保存成文件。本例将保存公钥的文件名为 linden.pub,保存私钥的文件名为linden.ppk。
第四步:传输公钥文件到SSH服务器。为了让SSH服务器能读取公钥文件,还要将公钥文件传输到SSH服务器的用户主目录下的.ssh子目录中(如果没有.ssh目录,可手动建立),因为公钥文件可以公开给所有用户,传输公钥文件时不必考虑安全问题,可以使用FTP、电子邮件或软盘拷贝的方法。
第五步:转换公钥文件格式由于puttygen产生的公钥文件格式与 OpenSSH程序使用的格式不兼容,因此还要在Linux中使用openssh软件包自带的ssh-keygen程序对其进行转换。应输入如下命令进行转换:ssh-keygen -i -f /root/.ssh/ linden.pub>/root/.ssh/authorized_keys
第六步:连接SSH服务器
(1)运行PuTTY程序,在“Host Name”中输入服务器的IP地址或域名(如192.168.16.100)。
(2)选择对话框左边的“Category”窗口的“Connection”→“SSH”→“Auth”。
(3)在“Private key file for authentication”输入框中输入私钥文件的路径,然后单击“Open”按钮连接。
(4)PuTTY成功地连接到SSH服务器后,服务器会提示输入登录用户名。如果使用了保护私钥的口令短语,则还会提示输入口令短语。在登录过程中,不需要输入用户的口令。
1.4.2 在openssh-client中启用公钥认证
(1)产生密钥:可以使用 openssh软件包自带的ssh-keygen程序产生密钥,如执行以下命令:ssh-keygen -t rsa。
(2)传输公钥文件到SSH服务器:为了让SSH服务器能读取公钥文件,还要将产生的公钥文件id_rsa.pub传输到SSH服务器的用户主目录下的.ssh子目录中(如果没有.ssh目录,可手动建立),并改名为authorized_keys。
(3)连接SSH服务器:现在可以直接使用ssh命令登录到SSH服务器。
2 总结
使用 OpenSSH工具将增进系统安全性,所有使用OpenSSH工具的通讯,包括口令,都会被加密。telnet和ftp使用纯文本口令,并被明文发送。这些信息可能会被截取,口令可能会被检索,然后未经授权的人员可能会使用截取的口令登录进你的系统而对你的系统造成危害。所以应该尽可能地使用OpenSSH的工具集合来避免这些安全问题。
[1]孙永道,邵慧莹.Linux实用技能教程[M].北京:机械工业出版社.2008.
[2]文东戈,孙昌立,王旭.Linux操作系统实用教程[M].北京:清华大学出版社.2010.
[3]陈博.孙宏彬於岳.Linux 实用教程[M].北京:人民邮电出版社.2008.