> Linux教程 > linux基础 >

Linux下如何编译安装OpenSSH

SSH在系统管理与运维中的作用,想必大家都是知道的,常用且不可缺少。

远程安装调试SSH特别注意,OpenSSH卸载后,可能导致凡使用SSH协议连接服务器的工具都无法登陆,比如WINSCP、PUTTY等,如果你正使用远程桌面,最好先开启TELNET并确保开机启动(或其它可替代的远程管理工具也可以),客户端可以正常连接后才可动手更新SSH,否则一旦SSH启动失败,就只能找机房了。

一、卸载原来SSH

默认SSH会安装为服务,且开机启动,所以要先把服务停止(本文环境RedHat5.4):
service sshd stop
这时,建议备份一下/etc/init.d/sshd这个启动文件,因为下文编译安装OpenSSH后,没这个启动文件,尽管实际修改使用也不是太方便,除非你下文的安装目录跟原来的一样的。
mv /etc/init.d/sshd /etc/init.d/sshd.old
卸载软件包:
rmp -qa|grep openssh*
把输出列表中的SSH软件包都卸载掉。卸载方法请参考:Linux下软件卸载方法

二、下载并安装新的OPENSSH
 

复制代码代码如下:
cd /tmp
wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz
tar xzvf openssh-5.9p1.tar.gz
cd openssh-5.9p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib2
make && make install

这里需要注意,上面的./configure配置,天缘的默认路径如下:
openssl -> /usr/local/openssl
zlib -> /usr/local/zlib2
确认这些路径跟你的系统对应。不同则需手动修改掉。此外还有些参数,比如:
--bindir=/usr/bin --sbindir=/usr/sbin
可根据需要设定。

三、查询SSH版本

[root@localhost]# ssh -V
OpenSSH_5.9p1, OpenSSL 1.0.1 14 Mar 2012

四、设为服务开机运行

1、简单的开机启动设置方法
由于是自编译安装的OpenSSH,没有sshd这个启动文件,所以直接使用传统的启动方式,直接修改rc.local。打开/etc/rc.local,添加:
/usr/sbin/sshd
即可设置为开机启动。

2、爱折腾设置开机方法
使用chkconfig设置结合上文备份的sshd文件设为开机启动有点麻烦,首先还原/etc/init.d/sshd:
mv /etc/init.d/sshd.old /etc/init.d/sshd
再打开/etc/init.d/sshd文件(原装的sshd启动配置文件大概有4K多,主要确认顶部几个路径是否正确即可),天缘大概整理一下,主要如下几个(可能不一定完整,下次实际确认一下再补充完善):
 

复制代码代码如下:

...
# source function library
. /etc/rc.d/init.d/functions

# pull in sysconfig settings
[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd

RETVAL=0
prog="sshd"
lockfile=/var/lock/subsys/$prog

# Some functions to make the below more readable
KEYGEN=/usr/bin/ssh-keygen
SSHD=/usr/sbin/sshd
RSA1_KEY=/etc/ssh/ssh_host_key
RSA_KEY=/etc/ssh/ssh_host_rsa_key
DSA_KEY=/etc/ssh/ssh_host_dsa_key
PID_FILE=/var/run/sshd.pid
...

确认这些并修改这些路径后保存。
使用chkconfig添加为服务:
chkconfig –add sshd
chkconfig –level 2345 sshd on
这样就设置完成了。

五、重启电脑或服务
启动SSH:
service sshd start
停止SSH:
service sshd stop

(责任编辑:IT)