Linux操作系统升级低版本的OpenSSH到9.3的高版本

OpenSSH 9.3之前的版本存在各种各样的安全漏洞,为此,我们需要将OpenSSH升级到最新的9.3的版本。

执行:ssh -V,我们可以查看当前的openssh版本

 为了避免升级过程中出现意外而导致服务器无法正常使用,建议操作前先对服务器进行快照备份!!!

1. 备份原有pam.d下的sshd文件

mv /etc/pam.d/sshd /etc/pam.d/sshd-bak
ls -l /etc/pam.d/sshd*

cp /etc/ssh/ /etc/ssh-bak/

当备份pam.d下的sshd文件时,发现该路径下没有此文件时,可以从其他服务器拷贝一个过来,或是执行:vi /etc/pam.d/sshd 手敲也行,其内容如下:

#%PAM-1.0
auth       substack     password-auth
auth       include      postlogin
account    required     pam_sepermit.so
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    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    optional     pam_motd.so
session    include      password-auth
session    include      postlogin

2. 安装telnet

升级过程会卸载旧的ssh而导致无法远程,所以先安装一个Telnet。如果安装期间不使用服务器则可忽略telnet的安装(毕竟还有服务器的快照备份)

检查系统中是否已经安装了telnet的服务端和客户端,命令如下:

rpm -q telnet-server
rpm -q telnet

当系统中没有安装telnet时,则会报如下信息:

执行命令进行安装telnet

yum install telnet-server  -y
yum install telnet -y

设置开机启动并启动telnet

systemctl enable telnet.socket
systemctl start telnet.socket

防火墙开启23端口,使用 telnet ip 进行连接登录。默认系统中是不允许root用户使用telnet登录的,因此我们需要授权一下

echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty

当我们在进行登录时无法正常登录时,主机端执行

tail /var/log/secure

假如我们看到的是:access denied: tty 'pts/3' is not secure !

此时我们如果看到的是pts几就将几添加一下

echo 'pts/3' >>/etc/securetty

添加后一定要重启telnet

3. 下载openssh包进行升级

cd /opt/
wget http://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz

解压

tar -zxvf openssh-9.3p1.tar.gz
cd openssh-9.3p1

卸载旧版本

rpm -e --nodeps `rpm -qa | grep openssh`

安装相关依赖

yum -y install gcc pam-devel zlib-devel openssl-devel

编译配置

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-pam

编译并安装

make && make install

 文件授权

chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key

复制配置文件

cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd

还原配置文件

cp /etc/pam.d/sshd-bak /etc/pam.d/sshd
cp /etc/ssh-bak/sshd_config /etc/ssh/sshd_config

添加开机自启

chkconfig --add sshd
chkconfig sshd on

 执行:sshd -t  验证配置文件是否正确

 此时我们已经看到这两个属性在当前openssh版本下不支持,我们进入配置文件,将这两个属性注释掉

vi /etc/ssh/sshd_config

重新启动sshd

systemctl restart sshd

 执行:ssh -V  此时我们已经可以看到openssh已经升级到了9.3

 4. 升级过程遇到的坑

4.1 升级后ssh工具无法成功连接(或是连接上了,但是黑框打不开),找了很多资料,最终发现,问题出在了selinux上。此时我们只需要执行:setenforce 0  之后重启openssh的服务即可

setenforce 0
systemctl restart sshd

到此我们会发现ssh工具已经能顺利连接服务器了

4.2 升级ssh工具后sftp窗口打不开,这个很好解决,只需要配置一下sshd_config即可轻松解决

vi /etc/ssh/sshd_config

注释掉Subsystem那行,重新添加一行

 重启openssh服务,注意正在使用的ssh工具也关闭掉重启一下(可能出于连接状态,但是sftp打不开。但此问题截止目前已经处理了,所以也需要关闭重新打开)。

猜你喜欢

转载自blog.csdn.net/Dai_Haijiao/article/details/131764681
今日推荐