升级openssh
准备工作
查看是否有 glibc-devel 、gcc 、gcc-c++、 zlib-devel
glibc-devel
- 64bit:strings /lib64/libc.so.6 |grep GLIBC
- 32bit:strings /lib/libc.so.6 |grep GLIBC
gcc
- gcc -v
gcc-c++
- g++ -v
zlib-devel
- rpm -qa |grep zlib
这里需要注意一下的就是,输入上面这行命令后应该会出现两个zlib
一个是zlib,另一个则是zlib-devel
如果没有zlib-devel,只有zlib
请下载版本相同的zlib和zlib-devel rpm包,
进行同时安装,命令如下:
rpm -Uvh ./*.rpm
不用卸载之前的zlib包,安装完成后,之前的包会自动移除
准备包
- openssh-7.8p1.tar.gz
- openssl-1.0.2h.tar.gz
版本自行选择,但是注意 openssh 对应的 openssl
还有就是一定要先升级 openssl
步骤一:升级openssl
卸载旧版本的openssl包
- 查看openssl包 rpm -qa|grep openssl
- 卸载openssl包 rpm -e --nodeps (包名)
解压openssl包
- tar -zxvf openssl-1.0.2h.tar.gz
进入解压路径:
- cd openssl-1.0.2h
安装编译openssl:
- ./config --prefix=/usr --shared && make && make install
创建软链接:
- ln -s /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10
- ln -s /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.10
验证版本信息
- openssl version -a
到此openssl升级完毕
步骤二:升级openssh
备份ssh文件 /etc/ssh
- cp -r /etc/ssh/ /opt/mypackage/ssh-bf(后面这个目录自行创建)
解压openssh包
- tar -zxvf openssh-7.8p1.tar.gz
进入解压路径
- cd openssh-7.8p1
安装编译
- ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords
- make && make install
(–with-zlib --with-md5-passwords)为将密码md5加密,是否需要自己选择
配置(使用root登录)
- echo “PermitRootLogin yes” >> /etc/ssh/sshd_config
复制启动脚本:
- cp -p contrib/redhat/sshd.init /etc/init.d/sshd (复制)
- chmod +x /etc/init.d/sshd (添加执行权限)
- chkconfig --add sshd (添加sshd服务)
设置开机启动:
- chkconfig sshd on
- chkconfig --list sshd
查看服务是否设定为开机自启
- systemctl list-unit-files
(ps:命令执行后,会出现两列,左边是服务名称,右边是状态,enabled是开机启动,disabled
是开机不启动 找到sshd.service)
验证版本信息:
- ssh -V
升级重点注意事项,不注意会使ssh远程工具无法连接
1.升级过后可能会因etc/ssh/ssh_host_ecdsa_key文件的权限过大 ,导致ssh工具连接不上
处理方法:
https://blog.csdn.net/peaktravel/article/details/85529927
2.在安装编译过程中,/etc/sysconfig/selinux 文件中selinux 状态可能会变为 enabled 需改为disable
查看状态命令 /usr/sbin/sestatus -v
临时关闭命令 setenforce 0
永久关闭需更改配置文件中的selinux
vim /etc/sysconfig/selinux
SElinux = disable
3.步骤二在编译过后可能会出现/etc/ssh/sshd_config 文件为空的这种情况,需手动添加以下几行
Port =22
Protocol 2
PermitRootLogin yes
PermitEmptyPasswords yes
PasswordAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
finally 重启ssh服务
- service sshd restart 或者 systemctl restart sshd