升级openssh

Openssh依赖:

gcc

软件包清单如下,自行前往pkgs.org下载,或者使用yum install gcc

cpp-4.8.5-44.el7.x86_64.rpm
gcc-4.8.5-44.el7.x86_64.rpm
 glibc-2.17-325.el7_9.x86_64.rpm
 glibc-common-2.17-325.el7_9.x86_64.rpm
 glibc-devel-2.17-325.el7_9.x86_64.rpm
 glibc-headers-2.17-325.el7_9.x86_64.rpm
 kernel-headers-3.10.0-1160.59.1.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm

Openssl Openssl-devel

软件包清单如下,自行前往pkgs.org下载,或者使用yum install openssl-devel

keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm 
krb5-devel-1.15.1-51.el7_9.x86_64.rpm      
krb5-libs-1.15.1-51.el7_9.x86_64.rpm       
libcom_err-1.42.9-19.el7.x86_64.rpm        
libcom_err-devel-1.42.9-19.el7.x86_64.rpm  
libkadm5-1.15.1-51.el7_9.x86_64.rpm        
libselinux-2.5-15.el7.x86_64.rpm           
libselinux-devel-2.5-15.el7.x86_64.rpm     
libsepol-2.5-10.el7.x86_64.rpm             
libsepol-devel-2.5-10.el7.x86_64.rpm       
libverto-devel-0.2.5-4.el7.x86_64.rpm      
openssl-1.0.2k-24.el7_9.x86_64.rpm         
openssl-devel-1.0.2k-24.el7_9.x86_64.rpm   
openssl-libs-1.0.2k-24.el7_9.x86_64.rpm    
pcre-devel-8.32-17.el7.x86_64.rpm          
zlib-1.2.7-19.el7_9.x86_64.rpm             
zlib-devel-1.2.7-19.el7_9.x86_64.rpm       

处理先前ssh

虽然不会关闭当前sshd链接但是推荐先编译安装完成后再走卸载这一步骤

#备份之前的SSH配置目录
cp -ar /etc/ssh /etc/ssh-bak
#删除软件
rpm -qa | grep openssh
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64

#卸载会删除/etc/ssh下的文件,注意用上面命令备份
rpm -e --nodeps openssh-server-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-clients-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-7.4p1-21.el7.x86_64

#编译安装的openssh可以在编译目录使用make uninstall卸载,不会关闭当前sshd链接.

编译安装ssh

下载最新版ssh源码

阿里云开源镜像站资源目录

https://www.openssh.com/portable.html

测试通过8.9p1 9.3p1 9.4p1

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz
tar -zxvf openssh-9.4p1.tar.gz
cd openssh-9.4p1
#--prefix设置为/usr/local将会自动把文件安装到默认路径,如果指定到/usr/local/openssh-9.4所有文件都会在这,需要手动设置环境变量。
./configure --prefix=/usr/local/openssh-9.4 --sysconfdir=/etc/ssh --with-zlib --without-openssl-header-check --with-ssl-dir=/usr/local
make
make install

echo $?
0
#返回0代表没有报错

设置环境变量

如果安装位置是/usr/local就不需要这一步

[root@iZj3c01kdktnoi5glsnfu1Z etc]# vim /etc/profile
#添加如下环境变量,如果之前有PATH直接在原先的后面追加openssh的bin路径
export PATH=${PATH}:/usr/local/openssh-9.4/bin:/usr/local/openssh-9.4/sbin

[root@iZj3c01kdktnoi5glsnfu1Z etc]# source /etc/profile
[root@iZj3c01kdktnoi5glsnfu1Z etc]# ssh -V
OpenSSH_9.3p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@iZj3c01kdktnoi5glsnfu1Z etc]# sshd -V
OpenSSH_9.3, OpenSSL 1.0.2k-fips  26 Jan 2017

后续

如果/etc/ssh中有配置文件,安装的时候就不会覆盖原先的配置会按照之前的配置启动。

如果/etc/ssh中没有配置文件,本次安装完成后会重新创建新的ssh配置需要按照以下步骤修改关键配置:

也可以使用mv -f /etc/ssh-bak/ /etc/ssh/命令将原先的备份配置恢复。

#允许root登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
#启动命令
/usr/local/openssh-9.4/sbin/sshd

#修改启动文件,如果上面编译安装指定的路径是/usr/local这一步不要做!
sed -i 's#/usr#/usr/local/openssh-9.4#g' ./contrib/redhat/sshd.init
#配置启动文件
cp ./contrib/redhat/sshd.init /etc/init.d/sshd

chkconfig --add sshd
chkconfig sshd on

!!!注意一定要关闭selinux 不然这个sshd开机自启脚本会不正常

#保险起见还可以设置一个一分钟执行一次的定时任务用于启动sshd
crontab -e

#test startup sshd
*/1 * * * * /usr/local/openssh-9.4/sbin/sshd

#旧的sshd进程还在启动时,当你完成以上步骤后可以使用以下命令重启
/etc/init.d/sshd restart

#如果测试没有问题,就可以将定时任务删除。
# Linux  openssh 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×