通常我使用共享密钥通过 ssh 连接到我们的 Ubuntu 服务器。这样可行。
有时我会更改 /etc/ssh/sshd_config 并设置“PasswordAuthentication yes”以允许某人使用密码进行连接。如果他们在不使用 -i 选项指定密钥的情况下进行连接,系统将提示他们输入密码
这种行为似乎在最新的 Ubuntu 22.10 中有所改变
即使在 sshd_config 中将 PasswordAuthentication 设置为 yes,尝试在没有密钥的情况下进行 ssh 时,也会给出错误“权限被拒绝(公钥)”,而不会提示输入密码
我的 Ubuntu 服务器可以追溯到 18 世纪,这种行为是新的。
我比较了 22.04 服务器(提示输入密码)和 22.10 服务器(不提示输入密码)之间的 sshd_config 文件,所有选项的配置都完全相同
知道我遗漏了什么吗?
谢谢
答案1
您将其视为操作系统的事情,但据我了解,Ubuntu 本身与 SSH 无关,这将由 SSHD 处理,具体取决于正在运行的 ssh 守护程序(我假设是 OpenSSH 服务器,因为这通常是 Ubuntu 自带的)。
从表面上看,上个月发布了一个新版本的 OpenSSH Server(版本9.1- 2022 年 10 月 4 日)9.0于 2022 年 4 月 8 日发布。我不确定 Ubuntu 22.04 和 22.10 中打包的默认版本是什么。
快速浏览发行说明并没有发现任何与您的情况特别相关的内容,它似乎是一个小版本,但我不确定您遇到这个问题多久了。
可能只需检查出现问题的机器上的 SSHD 版本 ( ssh -V
) 与您之前使用的版本,如果不同,您可以恢复并查看是否能解决问题。如果能,您可能需要深入研究 OpenSSH 文档以查明实际的根本原因。
如果我错了,这确实是 Ubuntu 的问题,也许询问 Ubuntu会更了解。
答案2
我今天偶然发现了同样的问题。所有文档都表明包含PasswordAuthentication yes
在内/etc/ssh/sshd_config
。经过进一步调查,我注意到启用了一个包含配置选项。Include /etc/ssh/sshd_config.d/*.conf
选项1:禁用继承/etc/ssh/sshd_config
# Include /etc/ssh/sshd_config.d/*.conf
并设置PasswordAuthentication yes
选项 2: cd /etc/ssh/sshd_config.d
ls
查找包含以下内容的条目PasswordAuthentication no
(这将覆盖在 中输入的任何配置/etc/ssh/sshd_config
)并将值设置为是。
PasswordAuthentication no
希望这对您有所帮助。