首先查看当前版本 centos7 默认使用ssh

ssh -V 
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

安装依赖包

yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pam-devel libselinux-devel wget

下载SSH9.3源码包

官网下载  https://www.openssh.com

离线下载对应版本     openssh-9.3p1.tar.gz 

centos7升级openssh9.3p1_远程登录

在线下载对应版本 推荐

wget -c https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz 
mv openssh-9.3p1.tar.gz /opt && cd /opt

备份旧版ssh

mv /usr/sbin/sshd /usr/sbin/sshd.old
mv /usr/bin/ssh /usr/bin/ssh.old

如果旧版本是源码安装的OpenSSH,建议备份整个openssh 目录:
mv /usr/local/openssh /usr/local/openssh.old

解压安装

tar -zxvf openssh-9.3p1.tar.gz  #解压
cd openssh-9.3p1 
#执行安装
#其中 未升级openssl可不加该路径   --with-ssl-dir=/usr/local/openssl
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening
#编译安装
make && make install 
#可能会报秘钥权限错误,添加权限
chmod 600 /etc/ssh/ssh_host_*
#注意 如果安装报错
configure: error: OpenSSL library not found
可能是openssl安装时出现问题与openssh默认的包位置存在区别. configure 增加 --with-ssl-dir=xxxxx openssl安装的位置


修改配置文件  允许root远程登录

将PermitRootLogin prohibit-password 修改为 PermitRootLogin yes 

#找到安装路径下的sshd_config 文件进行修改
vim /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication  yes

关闭DNS选项加快访问

PubkeyAuthentication yes

注释下面2个配置

#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no

检查ssh配置 无报错即为正常

#检查是否有配置错误
sshd -t

启动服务

mv /lib/systemd/system/sshd.service /lib/systemd/system/ssh.service.bak
yes | cp /opt/openssh-9.3p1/contrib/redhat/sshd.init /etc/init.d/sshd
#修改路径
sed -i "s/SSHD=\/usr\/sbin\/sshd/SSHD=\/usr\/local\/openssh\/sbin\/sshd/g" /etc/init.d/sshd
sed -i "s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g" /etc/init.d/sshd

#设置启动
yes | cp -arp /usr/local/openssh/bin/* /usr/bin/
/etc/init.d/sshd start
chmod +x /etc/rc.d/rc.local
echo “/etc/init.d/sshd start” >> /etc/rc.d/rc.local

查看openssh版本

ssh -V

最后自行远程登录验证