在网络上看到许多资料基本都是转来转去,不知道有没有人实践,个人从实际经验总结一下,顺便把拿来主义进行的彻底一些。
行规1:先测试,再生产。
行规2:先备份,再操作。
行规3,记住一定要有退路。
本身升级openssh一般来讲很简单,configure & make & make install 喝茶休息。
----实际操练如下:
cat /etc/redhat-release #查看版本
CentOS Linux release 7.2.1511 (Core)
rpm -aq openssh #查看openssh版本
openssh-6.6.1p1-22.el7.x86_64
rpm -qa | grep openssh|xargs rpm -e --nodeps #卸载查到的openssh
systemctl stop sshd
systemctl is-active sshd
rpm -qa | grep openssh #验证是否卸载
----假设当前目录为/fix/openssh
cd /fix/openssh
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz #下载最新的openssh版本
wget http://www.zlib.net/zlib-1.2.11.tar.gz #下载openssh对应的需要用到的zlib
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2o.tar.gz #从网上查到对应的opensshl,没有测试新版本是否支持,理论上应该支持
#三个档下载后保存上传至需要升级的主机。
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make test
make install
make clean
./configure --shared
make test
make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include
编辑配置文件
加入如下内容后保存退出
vi /etc/ld.so.conf.d/zlib.conf
/usr/local/zlib/lib
ldconfig -v #刷新库文件
tar -xzvf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
./config shared zlib
make
make test
make install
重命名现有文件目录
mv /usr/bin/openssl /usr/bin/openssl.OFF
创建ssl相关软连接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
编辑配置文件/etc/ld.so.conf.d/ssl.conf
vi /etc/ld.so.conf.d/ssl.conf
加入如下内容后保存退出
/usr/local/ssl/lib
ldconfig -v #刷新库文件
查看openssl版本
openssl version -a
升级OpenSSH
重命名原有配置文件
mv /etc/ssh /etc/ssh.bak
tar -zxf openssh-7.9p1.tar.gz
cd openssh-7.9p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --mandir=/usr/share/man --with-zlib=/usr/local/zlib
make && make install
cp openssh-7.9p1/contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
vi /etc/init.d/sshd #修改脚本文件
echo -n $"Starting $prog:"
OPTIONS="-f /etc/ssh/sshd_config" #就是增加此行
$SSHD $OPTIONS && success || failure
RETVAL=$?
vi /etc/ssh/sshd_config
PasswordAuthentication yes #取消这一行注释
PermitRootLogin yes #添加PermitRootLogin yes行 本次涉及安全限制可以不用加或把yes 改成 no 即禁止root登录
systemctl daemon-reload
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh/bin/ssh /usr/bin/
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
systemctl enable sshd
ssh -V
#修复xftp升级后不能用
locate sftp-server
/usr/local/openssh/libexec/sftp-server
vi /etc/ssh/sshd_config
Subsystem sftp /usr/local/openssh/libexec/sftp-server
systemctl restart sshd
###End###
注:每一步都按命令执行,如有报错请及时反馈,因为过程不可逆,有一定风险。尽量不要断开shell状态。完成后新建一个窗口测试没有问题再断开。否则只能利用控制台处理了。还有友好提示是zlib本身版本如果用rpm查询并没有升级,只是库做了更新。不影响openssh 的升级。
友情提示:条件可以的话可以安装telnet 或vnc之类的工具作为备用连接。