CentOS7.4升级OpenSSH到9.0
背景
服务器自带OpenSSH
通常为7.x版本,会包含很多漏洞,因此需要将其版本进行升级,但是又无法直接通过yum
进行升级。
准备工作
安装编译所需依赖软件包:
1
yum install -y wget gcc pam-devel libselinux-devel zlib-devel openssl-devel
下载 OpenSSH 安装包上传至服务器或 wget 直接下载:
1
2cd /usr/local/src
wget -O openssh.tar.gz https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz备份配置文件,一般卸载的时候都会把配置文件以
sshd_config.rpmsave
的方式另存一份,但是/etc/pam.d/sshd
这个配置文件并没有另存,所以建议都备份一下。1
2cp /etc/ssh/sshd_config sshd_config.backup
cp /etc/pam.d/sshd sshd.backup删除低版本OpenSSH的的rpm包
1
rpm -e --nodeps `rpm -qa | grep openssh`
开始安装
解压
1
2tar -zxvf openssh.tar.gz
cd openssh-9.0p1编译配置
1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
如果配置过程出现如下错误:
configure: error: PAM headers not found
可通过安装依赖解决:
yum -y install pam-devel
编译安装
1
make && make install
配置
调整文件权限
1
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
复制配置文件
1
2cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd还原配置文件
1
2mv ../sshd.backup /etc/pam.d/sshd
mv ../sshd_config.backup /etc/ssh/sshd_config添加添加自启服务ssh到开机启动项
1
2chkconfig --add sshd
chkconfig sshd on重启服务
1
systemctl restart sshd
验证结果
1 | ssh -V |
运行结果
OpenSSH_9.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017
到此,OpenSSH
升级完成,可新增一个窗口通过ssh确认是否能连接服务器,确认无误之前不要关闭现有连接窗口,防止出现问题无法登录。
清理源代码
1 | rm -rf /usr/local/src/openssh* |
修改默认端口
通过修改/etc/ssh/sshd_config
文件中的Port
属性为指定端口,重启sshd
服务即可。如果无法连接,请检测防火墙是否开启相应端口。
可能出现的问题
升级后,如果发现ssh
可以连接,但是sftp
无法连接,解决方式如下:
1 | 首先通过命令找到sftp-server的路径 |
将原有配置:
Subsystem sftp /usr/libexec/openssh/sftp-server
修改为:
Subsystem sftp /usr/libexec/sftp-server
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SpringCoder!
评论