ssh修复升级方案.docx
一、下载最新版本 OpenSSH
从https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/下载最新版本openssh-8.2p1.tar.gz,放在了/home/ssh目录下(没有要求)
二、编译安装 OpenSSH
tar xzvf openssh-8.2p1.tar.gz
cd openssh-8.2p1
./configure --prefix=/usr --sysconfdir=/etc/ssh 配置文件路径必须是/etc/ssh (如果提示缺少某依赖文件, 可以先安装依赖包)
三、把老版本的ssh放到另外一个目录,这步是关键,这样就不用卸载旧版本
mkdir /etc/sshbak 新建文件夹
mv /etc/ssh/* /etc/sshbak/ 备份原文件
四、编译源码包
make&&make install
五、编译安装成功后,进行配置
cp /home/ssh/openssh-8.2p1/opensshd.init /etc/init.d/sshd 复制启动文件
注意:这里的opensshd.init脚本是在openssh安装包中,与你安装包存放路径有关,如果不是放在/home/ssh,则需要做修改
chmod +x /etc/init.d/sshd 修改权限
修改配置文件 /etc/ssh/sshd_config
#Port 22 去掉注释#
#PermitRootLogin prohibit-password
去掉注释并改为 PermitRootLogin yes
注意:必须去掉注释,不然重启后ssh无法连接
六、重启
service sshd restart
使用ssh -V 命令查看,这里ssh的版本已升级为8.2。
最关键的一步就是把老的ssh文件夹移到其他地方,然后新的ssh的目录仍然放在/etc/ssh下面,这样的升级过程中ssh就不会断开。
七、问题汇总
当然在安装的过程中并不是都那么顺利,会出现各种问题
在运行./configure的时候提示libcrypto not found错误,那可能是缺少依赖
安装依赖
apt install libzip-dev libssl-dev libxml2 openssl-devel
openssl library not found
可能openssl不是默认路径urs/local/ssl,设置下实际路径,不然会报错,一般可以在usr/local路径下查找
./configure --with-ssl-dir=ssl的实际路径
如果运行./configure出现 zlib.h missing,则需要安装zlib源码文件
下载解压,编译安装
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local
make
make install
出现关于openssl的问题,则更新升级openssl
下载解压,编译安装
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz --no-check-certificate
tar -zxvf openssl-1.1.1.tar.gz
apt purge openssl
cd ../openssl-1.1.1
./config shared --prefix=/usr/local/ssl
make test
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