首先查看当前版本 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源码包
离线下载对应版本 openssh-9.3p1.tar.gz
在线下载对应版本 推荐
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
最后自行远程登录验证