一、背景:
因老版存在很多漏洞,因此需要升级到最新版本,服务器所在区域无法上网,需要离线安装所有软件和依赖包;
相关资源:
https://download.csdn.net/download/gz_jax/11128971
(里面缺少gcc-c++包,自行下载添加)
二、升级openssh7.9
所有的依赖包上传服务器(我是放在/home/soft目录下)
1、先安装telnet-server (防止openssh升级后无法远程登入)
#rpm -ivh telnet-server-0.17-48.el6.x86_64.rpm
2、安装xinetd
#rpm -ivh xinetd-2.3.14-40.el6.x86_64.rpm
将telnet在xinetd的配置中启用
#vi /etc/xinetd.d/telnet
#disable = no # 启用telnet
#service xinetd start # 启动telnet
测试telnet是否可用。
3、将所有相关依赖强制安装
cd /home/soft
rpm -ivh *.rpm --nodeps --force
4、升级zlib
#cd /home/soft
#tar -zxvf zlib-1.2.11.tar.gz
#cd zlib-1.2.11
#./configure --prefix=/usr/local/zlib-1.2.11 -share
#make
#make test #如果有报错,一定要查明原因解决以免影响后续安装
#make install
zlib安装成功如下:
安装成功之后:
配置库文件搜索路径
#vi /etc/ld.so.conf
在最后加入/usr/local/zlib-1.2.11/lib
刷新缓存文件/etc/ld.so.cache
#ldconfig –v
# ln -s /usr/local/zlib-1.2.11 /usr/local/zlib
5、升级openssl
#cd/home/soft
#tar zxvf openssl-1.0.2r.tar.gz
#cd openssl-1.0.2r
#./config sharedzlib-dynamic --prefix=/usr/local/openssl-1.0.2r --with-zlib-lib=/usr/local/zlib-1.2.11/lib --with-zlib-include=/usr/local/zlib-1.2.11/include
#make
#make test (这一步是进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出原因,否则一味继续可能导致 SSH 不能使用!)
#make install
配置库文件搜索路径
#vi/etc/ld.so.conf
在最后加入/usr/local/openssl-1.0.2r/lib
刷新缓存文件/etc/ld.so.cache
#ldconfig –v
#ln -s /usr/local/openssl-1.0.2r/usr/local/openssl
配置环境变更
vi /etc/profile
在最后加入以下两行
PATH=/usr/local/openssl/bin:$PATH
export PATH
让配置生效
# source/etc/profile
查看openssl的版本号,以验证是否安装正确,成功如下图:
5、升级openssh
停止OpenSSH服务
# systemctl stop sshd.service
查询并卸载openssh
# rpm -qa |grep openssh
openssh-server-6.6.1p1-22.el7.x86_64
openssh-clients-6.6.1p1-22.el7.x86_64
openssh-6.6.1p1-22.el7.x86_64
# rpm -eopenssh-6.6.1p1-22.el7.x86_64 –nodeps
# rpm -eopenssh-clients-6.6.1p1-22.el7.x86_64 –nodeps
# rpm -eopenssh-server-6.6.1p1-22.el7.x86_64
正式安装
#cd /home/soft
# tar zxvf openssh-7.9p1.tar.gz
#cd openssh-7.9p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib
#make
#make install
将sshd加入启动服务:
进入ssh安装解压目录
#cp ./contrib/redhat/sshd.init/etc/init.d/sshd
#chmod +x/etc/init.d/sshd
# chkconfigsshd on
最后,启动 SSH 服务使修改生效:
# systemct start sshd.service
确认一下当前的 OpenSSH 和 OpenSSL 是否正确:
# ssh -V
如果看到了新的版本号就说明升级成功,如下:
到这里算是升级完毕。
三、升级之后遇到的坑。
1、root无法远程登入,一直被拒绝。
解决方法:
开始提到过升级之后可能出现无法远程登入问题。
先用telnet登入系统
#vim /etc/ssh/sshd_config
找到 PermitRootLogin 取消注释
#PermitRootLogin yes
2、如果上面的方法还是解决不了,telnet登入之后查看日志消息
#vim /var/log/secure
如果出现如下情况日志
解决方法:
#vim /etc/pam.d/sshd
更改配置如下(更改前备份一下)
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
有其它问题欢迎提问。