
如何修复“sshd 错误:无法加载主机密钥”
问题:当我尝试通过 SSH 连接到远程服务器时,SSH 客户端失败,并显示
连接被 X.X.X.X 关闭
。在 SSH 服务器端,我看到错误消息:sshd error: Could not load host key
。这是怎么回事,如何修复此错误?
SSH 问题描述
此 SSH 连接错误的详细症状如下。
在SSH客户端,您已为远程SSH服务器启用密钥身份验证。但是,当您尝试连接到 SSH 服务器时,您看不到登录屏幕,并且 SSH 连接会立即关闭,并显示以下消息:
Connection closed by XXXX
Connection reset by XXXX
在SSH服务器端,系统日志有以下错误信息:
在 Ubuntu、Debian 或 Linux Mint 上的 /var/log/auth.log
中:
Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Oct 16 08:59:45 openstack sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Oct 16 08:59:45 openstack sshd[1214]: fatal: No supported key exchange algorithms [preauth]
在 CentOS、Fedora 或 RHEL 上的 /var/log/secure
中:
Feb 18 21:48:25 localhost sshd[14226]: fatal: No supported key exchange algorithms [preauth]
如何解决SSH登录错误
此问题的根本原因是 sshd
守护进程无法正确加载 SSH 主机密钥。
当首次在 Linux 系统上安装 OpenSSH 服务器时,应自动生成 SSH 主机密钥以供后续使用。但是,如果密钥生成未成功完成,则可能会导致类似这样的 SSH 登录问题。
让我们检查一下是否在应有的位置找到了 SSH 主机密钥。
$ ls -al /etc/ssh/ssh*key
如果在那里找不到 SSH 主机密钥,或者它们的大小全部截断为零(如上所示),则需要从头开始重新生成 SSH 主机密钥。
以发行版特定的方式重新生成 SSH 主机密钥
在 Ubuntu、Debian 或其衍生版本上,您可以使用 dpkg-reconfigure 工具重新生成 SSH 主机密钥,如下所示。
$ sudo rm -r /etc/ssh/ssh*key
$ sudo dpkg-reconfigure openssh-server
在 CentOS、RHEL 或 Fedora 上,您所要做的就是在删除现有(有问题的)密钥后重新启动 sshd。
$ sudo rm -r /etc/ssh/ssh*key
$ sudo systemctl restart sshd
使用 ssh-keygen 重新生成 SSH 主机密钥
重新生成 SSH 主机密钥的另一种方法是使用 ssh-keygen 命令手动生成它们,如下所示。
$ sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
$ sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
$ sudo ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
生成新的 SSH 主机密钥后,请确保在 /etc/ssh
目录中找到它们。此时无需重新启动 sshd。
$ ls -al /etc/ssh/ssh*key
现在再次尝试通过 SSH 连接到 SSH 服务器,看看问题是否消失。
原地址:debian (linux-console.net)
debian打开root登陆
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
原文中没有PermitRootLogin yes 则加到#PermitRootLogin prohibit-password下一行
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
这里的#PasswordAuthentication yes不用动保持默认就好
这里表示是否允许使用密码登陆。当这两行都被注释掉时,SSH 服务器默认允许 使用密码进行认证,但不允许使用空密码进行登,取消yes这行注释表示明确允许密码登陆。取消no这行注释表示明确禁止密码登陆。
Debian 软件源
大部分 Debian 的软件源配置文件使用传统的 One-Line-Style,路径为 /etc/apt/sources.list
;但是对于容器镜像,从 Debian 12 开始,其软件源配置文件变更为 DEB822 格式,路径为 /etc/apt/sources.list.d/debian.sources
。一般情况下,将对应文件中 Debian 默认的源地址 http://deb.debian.org/
替换为镜像地址即可。
Debian Buster 以上版本默认支持 HTTPS 源。如果遇到无法拉取 HTTPS 源的情况,请先使用 HTTP 源并安装:
apt install apt-transport-https ca-certificates
传统格式(/etc/apt/sources.list
)
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
DEB822 格式(/etc/apt/sources.list.d/debian.sources
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: bookworm bookworm-updates bookworm-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
# Suites: bookworm bookworm-updates bookworm-backports
# Components: main contrib non-free non-free-firmware
# Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: https://security.debian.org/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# Types: deb-src
# URIs: https://security.debian.org/debian-security
# Suites: bookworm-security
# Components: main contrib non-free non-free-firmware
# Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
- 感谢你赐予我前进的力量