前言:由于2024年7月1日,openssh发布了***新版9.8,所以服务器需要升级一下,特此做个详细记录:
由于下载***新版openssh9.8,需要将openssl也一并进行升级
一、下载openssh***新版本与openssl对应版本:
openssh***新版本下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable//
openssl对应版本下载地址(这下载OpenSSL 1.1.1v就可以):
Release OpenSSL 1.1.1v · openssl/openssl · GitHub
下载之后,请上传到需要升级的服务器的路径下
二、openssl安装:
2-1、安装前检查:
# 查看CentOS系统版本信息 cat /etc/redhat-release # 查看openssl版本信息 openssl version # 查看openssh的版本信息 ssh -V
2-2、安装依赖
# 安装相关的依赖项,如有遗漏再次安装 yum -y install gcc pam-devel zlib-devel openssl-devel net-tools
2-3、安装下载的openssl
由于openssh9.8p1要求openssl版本大于等于1.1.1,因此需要升级安装openssl。
①、解压openssl-1.1.1v.tar.gz
# 将openssl-1.1.1v解压到/usr/local目录下 Tar zxvf /home/test/openssl-1.1.1v.tar.gz –C /usr/local/ # 查看解压后目标目录情况 ll /usr/local/ | grep openssl # 进入openssl-1.1.1v目录下 cd /usr/local/openssl-1.1.1v/
②、openssl准备及安装
# 创建安装目录 mkdir /opt/openssl # 安装前查看openssl详细版本信息 openssl version #编译 # 配置编译和安装过程,"--prefix=" 选项配置安装目录 ./config --prefix=/opt/openssl # 构建程序以及所需的指令和依赖关系 make # 安装编译好的openssl-1.1.1w make install # 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功
③、更新lib文件
# 检查openssl-1.1.1v所需要的函数库 ldd /opt/openssl/bin/openssl # 添加openssl-1.1.1v的库文件路径到ld.so.conf echo "/opt/openssl/lib" >> /etc/ld.so.conf # 更新系统函数库库 ldconfig --verbose # ***路径查看openssl版本 ldd /opt/openssl/bin/openssl
④、更新bin文件
# 查看旧版本的openssl命令路径 which openssl # 重命名为openssl.old mv /bin/openssl /bin/openssl.old #重命名openssl文件 # 使用软连接的方式更新openssl命令 ln -s /opt/openssl/bin/openssl /bin/openssl # openssl命令查看版本呢 openssl version
三、openssh9.8安装
3-1、解压下载的安装包,卸载原来包
tar zxvf openssh9.7p1.tar.gz # 卸载openssh的rpm包 for i in $(rpm -qa | grep openssh);do rpm -e $i --nodeps;done
3-2、进入解压文件后,开始编译
# 配置编译和安装过程,"--prefix=" 配置安装目录,"--sysconfdir=" 配置文件路径,"--with-ssl-dir=" openssl的安装路径 ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/opt/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening # 构建程序以及所需的指令和依赖关系 make # 安装编译好的openssh9.8p1 make install # 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功
3-3、复制并修改启动sshd.init脚本
# 从源码目录下复制sshd.init到/etc/init.d/ cp contrib/redhat/sshd.init /etc/init.d/ ## 查看并修改SSHD的新路径,将新的openssh安装路径更新 cat /etc/init.d/sshd.init | grep SSHD sed -i "s/SSHD=\/usr\/sbin\/sshd/SSHD=\/usr\/local\/openssh\/sbin\/sshd/g" /etc/init.d/sshd.init cat /etc/init.d/sshd.init | grep SSHD ## 查看并修改ssh-keygen的新路径,将新的ssh-keygen安装路径更新 cat -n /etc/init.d/sshd.init | grep ssh-keygen sed -i "s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g" /etc/init.d/sshd.init cat -n /etc/init.d/sshd.init | grep ssh-keygen
3-4、修改配置文件
# 开启允许X11转发 echo 'X11Forwarding yes' >> /etc/ssh/sshd_config # 开启允许密码验证 echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
3-5、启动openssh,并设置开机启动
# 复制ssh的相关命令 cp -arp /usr/local/openssh/bin/* /usr/bin/ # 启动sshd服务 /etc/init.d/sshd.init # 查看版本 ssh –V # 添加开机启动 chmod +x /etc/rc.d/rc.local echo “/etc/init.d/sshd.init start” >> /etc/rc.d/rc.local
如果启动不成功,通过命令查看,是什么原因导致的
#通过 systemctl status sshd查看sshd是否正常启动 systemctl status sshd 如果执行上边命令也不可以,那么需要执行: yum install openssh-server #执行后,如果显示activing或者dead没有正常启动,那么需要执行命令,查看具体异常原因: tail -f /var/log/messages #根据日志情况,结果看到原因是22端口被占用导致无法正常启动(图当时没截)
所以需要将22端口kill掉,特别注意,执行下边这个命令后,你连接的这台服务器会马上连接不上了!!!,前边都执行没有问题,才可以执行,执行过几分钟后,再来链接发现正常链接上了:
fuser -k 22/tcp #执行时需特别注意 #如果怕执行上诉命令后连接不上,可以设置一个linux定时,操作方法如下: 使用cron的方法: 编辑当前用户的crontab文件: crontab -e 添加以下行来检查SSH服务并在它停止时重启: * * * * * pgrep sshd > /dev/null || /usr/sbin/sshd 这个crontab条目每分钟都会检查sshd进程是否运行。如果不运行,它将尝试重启SSH服务。
再次连接,发现可以正常链接上了,并通过命令查看是否为***新版本:
结束!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。