一、新建一个正确的 .repo
文件
创建文件:
sudo nano /etc/yum.repos.d/aliyun-centos7.repo
将以下内容粘贴进去:
[base]
name=CentOS-7 - Base - aliyun
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0[updates]
name=CentOS-7 - Updates - aliyun
baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/
enabled=1
gpgcheck=0[extras]
name=CentOS-7 - Extras - aliyun
baseurl=http://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0
💡 注意:
我们手动指定了
baseurl
为 CentOS 7 的路径禁用了 GPG 检查以避免密钥错误(如需开启再配置)
保存并退出(在 nano 中按 Ctrl+O
,回车,再按 Ctrl+X
退出)。
二、刷新缓存并测试
sudo yum clean all
sudo yum makecache
如果一切正常,你会看到:
元数据缓存已建立
三、安装依赖
sudo yum install gcc make zlib-devel pam-devel openssl-devel -y
四、一键升级脚本:upgrade_openssh_8.3.sh
请复制保存为 upgrade_openssh_8.3.sh
,并执行 bash upgrade_openssh_8.3.sh
:
#!/bin/bash
# -------------------------
# OpenSSH 8.3 升级脚本(适用于 Kylin / CentOS / RHEL)
# -------------------------set -e
OPENSSH_VERSION="8.3p1"
INSTALL_PREFIX="/usr/local/openssh"
SRC_DIR="/usr/local/src"echo "===> 安装依赖..."
yum install -y gcc make zlib-devel pam-devel openssl-devel wgetecho "===> 下载源码..."
cd $SRC_DIR
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${OPENSSH_VERSION}.tar.gz
tar zxvf openssh-${OPENSSH_VERSION}.tar.gz
cd openssh-${OPENSSH_VERSION}echo "===> 配置编译参数..."
./configure --prefix=${INSTALL_PREFIX} \
--sysconfdir=/etc/ssh \
--with-md5-passwords \
--with-pamecho "===> 编译并安装..."
make -j$(nproc)
make installecho "===> 备份旧版本 SSH 二进制..."
mv /usr/bin/ssh /usr/bin/ssh.bak 2>/dev/null || true
mv /usr/sbin/sshd /usr/sbin/sshd.bak 2>/dev/null || trueecho "===> 建立新版本软链接..."
ln -sf ${INSTALL_PREFIX}/bin/ssh /usr/bin/ssh
ln -sf ${INSTALL_PREFIX}/sbin/sshd /usr/sbin/sshdecho "===> 拷贝启动脚本(保持系统兼容)..."
cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshdecho "===> 添加系统服务(若需要)..."
chkconfig --add sshd
chkconfig sshd onecho "===> 检查版本:"
ssh -V
sshd -V || trueecho "===> 重启 sshd 服务(注意不要关闭当前连接)..."
systemctl restart sshd || service sshd restartecho "✅ OpenSSH ${OPENSSH_VERSION} 升级完成!"
升级后检查
ssh -V
# OpenSSH_8.3p1, OpenSSL ...
确认输出中有 OpenSSH_8.3p1
即表示升级成功。
提醒:
⚠️ 升级 OpenSSH 过程中请勿关闭 SSH 连接!
建议在VNC、串口、KVM方式下执行,避免升级失败锁死远程连接。
或使用
screen
/tmux
保持会话。
问题分析
❌ 当前问题分析:
GSSAPIAuthentication
和GSSAPICleanupCredentials
被 完全移除(OpenSSH 从 8.x 开始默认移除 GSSAPI)。RSAAuthentication
和RhostsRSAAuthentication
是 已废弃的老旧选项(从 OpenSSH 7.x 开始就建议不用)。因此,sshd 无法启动是因为
sshd_config
中存在这些不兼容配置项。解决方案:
你只需要修改
/etc/ssh/sshd_config
文件,注释或删除这些 4 行配置项。步骤:
sudo nano /etc/ssh/sshd_config
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
RSAAuthentication yes
RhostsRSAAuthentication no
修改为:
# GSSAPIAuthentication yes
# GSSAPICleanupCredentials yes
# RSAAuthentication yes
# RhostsRSAAuthentication no
或者直接删掉这几行也可以。
保存后,重新测试配置是否通过:
sudo /usr/sbin/sshd -t
如果没有任何输出,说明配置已修复成功。
✅ 然后重新启动 sshd:
sudo systemctl restart sshd