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
#如果测试没有问题,就可以将定时任务删除。