OpenSSH升级

本文档详细介绍了如何在CentOS系统上手动升级OpenSSH到最新版本9.0p1,包括下载所需软件包,升级zlib和openssl,停用旧版本的OpenSSH,安装新版本,修改配置文件,并处理可能出现的错误情况。整个过程涵盖了从基础准备到系统环境检查,再到升级和验证的每个步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、基础准备

官方网站下载最新版*.tar.gz安装包:

官方下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

openssh-9.0p1.tar.gz (注意:要下载p1版,此版为编译安装包)

官方下载地址:https://www.openssl.org/source/

openssl-1.1.1o.tar.gz

官方下载地址: http://www.zlib.net/

zlib-1.2.12.tar.gz

2、系统环境

查看openssl版本(可以看到版本信息和安装位置)

openssl version -a

3、升级openssh的步骤

1)、解压升级包

tar xzvf openssh-9.0p1.tar.gz

tar xzvf openssl-1.1.1o.tar.gz

tar xzvf zlib-1.2.12.tar.gz

2)、编译安装zlib

cd zlib-1.2.12

./configure --prefix=/usr/local/zlib

编译zlib出错,请安装gcc    yum install gcc

make && make install

echo '/usr/local/zlib/lib' >> /etc/ld.so.conf  
ldconfig -v 

验证zlib安装是否成功,要包含include、lib、share三个目录。

 a5d5a4398a322e9d9304bf26f1ebfe82.png

3)、编译安装openssl

cd openssl-1.1.1o

./config --prefix=/usr/local/ssl -d shared

make && make install   (时间比较长,切勿打断)

echo '/usr/local/ssl/lib' >> /etc/ld.so.conf

ldconfig -v 

4)、升级openSSH(通过Telnet登录到服务器,务必)

停止ssh服务
systemctl stop sshd
备份ssh配置文件
cp -r /etc/ssh /etc/ssh.old 

查看系统原有openssh包

91f69d8a5177c6cc8de67477e7e8608c.png

rpm -qa | grep openssh
根据上面查询出的结果,卸载系统里原有Openssh(一般有三个包,全部卸载)
rpm -e --nodeps  xxxxxxxxxx
rpm -e --nodeps openssh-server-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-clients-7.4p1-21.el7.x86_64
卸载完成后执行rpm -qa | grep openssh,确保没有回显
rpm -qa | grep openssh

5)、安装openssh

cd openssh-9.0p1

./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl

make && make install

6)、sshd_config文件修改

echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config

echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config

echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config

7)、备份原有文件,并将新的配置复制到指定目录

mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config

mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd

mv /usr/bin/ssh /usr/bin/ssh.bak
cp /usr/local/openssh/bin/ssh /usr/bin/ssh

mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
ssh服务必须开机自启动,因此要进行一些设置
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
重启sshd服务
systemctl restart sshd
查看sshd服务状态
systemctl status sshd -l
验证ssh版本
ssh -V
--重启服务器,测试ssh
reboot  

 4、出错情况汇总

1)、编译zlib出错,请安装gcc

yum install gcc

 2)、编译OpenSSL出错:缺少IPC/Cmd.pm模块

 解决方法:安装perl-CPAN

yum install -y perl-CPAN

3)sshd更改默认端口后不起作用

修改/etc/sshd_config里的port后,用systemctl restart sshd、systemctl status sshd发现还是以前的端口;有的centos版本不一样,有的在/usr/local/openssh/etc/sshd_config里面,在这里改,重新systemctl restart sshd、systemctl status sshd就可以生效。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值