lamess / openEuler操作系统升级OpenSSH

Created Mon, 11 Nov 2024 10:40:03 +0800 Modified Mon, 11 Nov 2024 14:44:41 +0800

openEuler操作系统升级OpenSSH

本文使用openEuler24.03版本演示升级过程。以下操作已在openEuler22.03、openEuler24.03上验证无误。

安装必要软件包

在默认最小安装的操作系统中,需要额外安装必要的软件包,以进行后续编译操作。
由于升级OpenSSH过程中需要重启sshd服务,为了保证操作安全,需要临时安装并启动telnet远程功能进行操作,避免相关错误导致操作系统无法登录。

dnf install tar telnet gcc make pam-devel zlib-devel openssl-devel

下载OpenSSH

从OpenSSH的官方发布页面中,任选一个镜像仓进入,找到最新的openssh-X.Xp1.tar.gz源码包,下载并上传到服务器中。

配置启用telnet

为了避免SSH版本更新过程中出错,可以先临时安装telnet进行远程访问。
相对于ssh来说,telnet一般被认为是不安全的登录方式,在整体升级操作完成之后要将telnet功能禁用掉。

按以下操作启用telnet远程功能。

  • 设置防火墙策略放行23端口。
firewall-cmd --add-port=23/tcp --permanent
firewall-cmd --reload
  • 启用telnet.socket服务。
systemctl enable telnet.socket --now

配置完成后,使用工具测试telnet方式登录操作系统。确认无误后即可开始后续操作。

telnet 127.0.0.1

编译安装OpenSSH

注意使用telnet连接服务器进行操作。

停止sshd服务,将所有活动中的ssh连接全部关闭,如果仍有未关闭的进程,可以用kill命令杀死。

systemctl stop sshd
ps -ef |grep sshd
kill 进程号

备份系统现有文件。

cp -r /etc/ssh /etc/ssh_old
cp /usr/sbin/sshd /usr/sbin/sshd_old
cp /etc/sysconfig/sshd /etc/sysconfig/sshd_old
mv /etc/ssh/ /tmp/
mkdir -p /etc/ssh

解压进入OpenSSH源码目录。请按实际文件名为准。

tar -zxf openssh-9.9p1.tar.gz
cd openssh-9.9p1/

开始编译安装。

./configure --prefix=/usr/local/openssh --with-zlib --with-ssl --with-pam --sysconfdir=/etc/ssh && make && make install

等待编译安装完成,将新编译的文件覆盖至原目录,并增加参数允许远程登录。

\cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
\cp /usr/local/openssh/bin/ssh /usr/bin/ssh
\cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
echo "UsePAM yes" >> /etc/ssh/sshd_config

使用命令校验配置文件是否正确。

sshd -t

确认无误后,启动sshd服务并测试登录。

systemctl enable sshd --now

确认sshd服务状态,检查SSH版本信息。

ssh -V

升级后操作

禁用telnet.socket服务,防火墙禁用23端口。

systemctl disable telnet.socket --now
firewall-cmd --remove-port=23/tcp --permanent
firewall-cmd --reload

已连接的telent通道不会被自动杀死,应手动查询telnet进程后杀死。
或直接关闭telnet的连接窗口后,确认无telnet进程也无法新建telnet连接即可。

ps -ef |grep telent
kill 进程号

最后可以将之前的备份文件删除。

mv /etc/ssh_old /tmp/
mv /usr/sbin/sshd_old /tmp/sbin_sshd
mv /etc/sysconfig/sshd_old /tmp/sysconfig_sshd

Kylin操作系统特殊要点

在 Kylin V10 (SP1) /(Tercel) 操作系统中,由于GSSAPIKexAlgorithms不受支持,因此在启动sshd服务前,应修改系统加密策略配置,否则可能会启动失败。

  • /etc/sysconfig/sshd文件中,取消"CRYPTO_POLICY=“一行的注释。
  • /etc/crypto-policies/back-ends/openssh.config文件中,对GSSAPIKexAlgorithms相关行进行注释。
  • /etc/ssh/sshd_config文件中,对GSSAPIKexAlgorithms相关行进行注释。

之后启动sshd服务并测试登录,并进行后续操作即可。

systemctl enable sshd --now