写在前面:这篇文章是参考一位博主的,在其基础上补充了一些。他的博客:
openssh-8.8 安装最新版_上晴下雪的博客-CSDN博客_openssh安装
经测试,升级sshd服务,是不用停止ssh连接的。
首先介绍一下openssh、openssl、zlib的关系:
openssl依赖于zlib,openssh依赖于openssl和zlib,所以我们要先安装zlib,然后是openssl,最后是openssh。
zlib下载地址:http://www.zlib.net/zlib-1.2.11.tar.gz
openssl下载地址:https://www.openssl.org/source/openssl-1.1.1l.tar.gz
openssh下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
1.安装zlib
#进入到/usr
mkdir zlib #创建源码存储目录
cd zlib
#将下载好的源码上传到/usr/zlib 然后解压
cd zlib-1.2.11 #进入到源码目录
./configure --prefix=/usr/local/zlib
make && make install
2.安装openssl
#进入/usr
mkdir openssl #创建源码存储目录
cd openssl
#将下载好的源码上传到/usr/openssl 然后解压
cd openssl-1.1.1l #进入到源码目录
./config shared --prefix=/usr/local/ssl
make
make install
ln -s /usr/local/ssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig –v
openssl version
3.安装openssh(为避免安装失败,最好是先配置一下telnet)
#进入/usr
mkdir openssh #创建源码存储目录
#将下载好的源码上传到/usr/openssh 然后解压
cd openssh-8.8p1 #进入到源码目录
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && make install
mv /usr/sbin/sshd /usr/sbin/sshd.old.bk
cp sshd /usr/sbin/
cp ssh /etc/init.d/ssh
cp sshd /usr/local/sbin/sshd
cp ssh /usr/local/sbin/ssh
4.同步配置
mv /usr/bin/scp /tmp/
mv /usr/bin/ssh* /tmp/
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh/bin/scp /usr/bin/scp
ln -s /usr/local/openssh/bin/ssh-add /usr/bin/ssh-add
ln -s /usr/local/openssh/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
ln -s /usr/local/sbin/sshd /usr/bin/sshd
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'Ciphers aes128-ctr,aes192-ctr,aes256-ctr' >> /usr/local/openssh/etc/sshd_config
5.执行service sshd reload(最好是不要restart,reload重载配置就可以了)
6.查看ssh -V
可能遇到的问题:
1. ssh升级之后无法登录,提示拒绝密码,解决办法:
将/etc/ssh/下的key文件备份,然后重启ssh
2.service sshd start 命令无法使用,提示:extra arguments 解决办法:
将/etc/init.d/sshd还原成之前的