一、前置步骤
1.关闭防火墙,防止升级openssh时无法登陆,telnet也无法登陆
service iptables stop
2.安装telnet
yum install telnet-server
3.设置telnet默认允许root登陆或者其他用户通过telnet登陆
修改telnet配置文件 将其中disable字段的yes改为no或者使用#注释,启用telnet服务,并完成重启
vi /etc/xinetd.d/telnet
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
/etc/init.d/xinetd restart 或者/etc/init.d/xinetd start
chkconfig xinetd on 使telnet服务开机启动,避免升级过程中服务器意外重启后无法远程登录系统
4.新开启一个远程终端以telnet登录验证是否成功启用
telnet [ip]
如果无法连接可以查看 vi /etc/services 中端口情况
5.安装编译所需工具包
yum install gcc pam-devel zlib-devel -y
二、openssl升级
1.备份当前openssL
find / -name openssl
查询结果如:
/usr/lib64/openssl
/usr/bin/openssl
/etc/pki/ca-trust/extracted/openssl
备份如:
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/bin/openssl /usr/bin/openssl.old
mv /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old
2.如下两个库文件须先备份,因系统内部分工具(如yum、wget等)依赖此库
cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old
cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
3.解压openssl源码并编译安装
tar -zxvf openssl
cd openssl
#必须加上--shared,否则编译时会找不到新安装的openssl的库而报错
./config --prefix=/usr --shared
make
#可能显示错误:Parse errors: No plan found in TAP output 解决:忽略错误,继续执行安装
make test
make install
#查看是否升级成功
openssl version -a
三、openssh升级
1.备份当前openssh
mv /etc/ssh /etc/ssh.old
2.解压openssh源码并编译安装
源码下载:www.openssh.com/
tar -zxvf openssh
cd openssh
./configure --prefix=/usr/local --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
make && make install
//默认路径(注意服务器中使用指定路径的情况,导致升级不成功)
mv /usr/bin/ssh /usr/bin/ssh_bak
cp /usr/local/bin/ssh /usr/bin/ssh
mv /usr/sbin/sshd /usr/sbin/sshd_bak
cp /usr/local/sbin/sshd /usr/sbin/sshd
//建议备份
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
3. 重启服务并查看是否升级成功
service sshd restart
ssh -V
注意:如果升级操作一直是在ssh远程会话中进行的, 上述sshd服务重启命令可能导致会话断开并无法使用ssh再行登入(即ssh未能成功重启), 此时需要通过telnet登入再执行sshd服务重启命令。
4. 设置可以直接使用root用户登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
service sshd restart
四、善后
1. 开启防火墙
2. 确认ssh&&secureCRT都可以正常登陆
3. 关闭telnet设置
vi /etc/xinetd.d/telnet
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
/etc/init.d/xinetd restart 或者/etc/init.d/xinetd start
五、异常处理
1. 更新完新的openssl后 可能会出现secureRTC无法连接的问题,但是可以使用ssh连接
原因: sshd(服务端) etc/ssh/sshd_conf 中无对应秘钥算法
sshd启动报错:Bad SSH2 cipher spec '...'
echo 'Ciphers' ssh -Q cipher | paste -d, -s >> /etc/ssh/sshd_config
sshd启动报错:Bad SSH2 mac spec '...'
echo 'MACs' ssh -Q mac | paste -d, -s >> /etc/ssh/sshd_config
sshd启动报错:Bad SSH2 KexAlgorithms '...' (可以升级完成后 先添加上这套秘钥算法)
echo 'KexAlgorithms' ssh -Q kex | paste -d, -s >> /etc/ssh/sshd_config
2. ssh : unrecognized service
find / -name sshd.init 获取到 如: contrib/redhat/sshd.init
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
/etc/init.d/sshd restart
注意:如果升级操作一直是在ssh远程会话中进行的, 上述sshd服务重启命令可能导致会话断开并无法使用ssh再行登入(即ssh未能成功重启), 此时需要通过telnet登入再执行sshd服务重启命令。
3. 升级openssh编译时报错“configure: error: *** working libcr
最简单的解决办法 -- 安装openssl-devel包即可 yum install -y openssl-devel
4. 启动时Unsupported option GSSAPICleanupCredentials报错
注释/etc/ssh/ssh_config的GSSAPICleanupCredentials的内容