首先查看当前Openssh版本

ssh -V
输出:
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

一、下载openssh

  • 直接在windows上下载openssh再上传到目标主机上

下载地址:http://www.openssh.com/releasenotes.html

二、解压

tar -xvzf openssh-9.1.tar.gz

三、删除原有ssh相关文件

卸载Openssh服务

注意:卸载完成后ssh服务会停掉,此时已经连接好的客户端不能断开,在ssh没安装好之前也不要重启ssh服务和服务器,否则断开之后将无法进行远程连接

yum remove openssh –y
rm -rf /etc/ssh/*

四、编译安装ssh

#进入解压好的ssh目录下后编译安装
./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl   --with-zlib   --with-md5-passwords   --with-pam && make && make install

期间报错1:“configure:error:**zlib.h missing please install first or check config.log**"

原因是缺少zlib和zlib-devel包,zlib-devel依赖于zlib ,所以需要先安装zlib

zlib-devel离线包下载:下载地址

zlib离线包下载:下载地址

yum -y install *.rpm

报错2:”configure: error: *** working libcrypto not found, check config.log

原因是Openssl问题,可以装一个新版本来解决

下载地址:https://www.openssl.org/source/openssl-1.1.1p.tar.gz

下载后上传至主机

# 解压
tar -xvzf openssl-1.1.1p.tar.gz
# 进入文件夹
cd openssl-1.1.1p/
# 安装
./config --prefix=/usr/local/openssl && make && make install
# 备份原openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
# 建立软连接
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
# 写入配置
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
ldconfig -v

安装完成后查看版本

openssl version

报错:"openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory"

原因是对应的库文件路径没有找到

# 建立软连接
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
# 再次查看版本
openssl version
cd openssh-9.1p1
#继续编译安装
./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/openssl   --with-zlib   --with-md5-passwords   --with-pam && make && make install

报错:"openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory"

需要手动安装一下PAM

yum -y install pam-devel

出现下图即为安装成功

若安装完成后执行 ssh -V 发现还是原来的版本, /usr/local/bin/ssh -V 是新版本的话

# 备份原ssh文件
mv /usr/bin/ssh /usr/bin/ssh.bak
# 创建软连接
ln -sf /usr/local/bin/ssh /usr/bin/ssh

在openssh-9.1p1目录下执行如下命令:

cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd

五、无法远程问题解决

升级成功后可能无法远程连接,包括不限于一直提示密码错误

vim /etc/ssh/sshd_config

#找到"#PubkeyAuthentication yes"这一项,将其放开
#找到"#PermitRootLogin prohibit-password"这一项,在其下面增加
PermitRootLogin yes 
#重启服务
systemctl restart sshd

=

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。