OpenSSH 无法使用密钥对进行身份验证

OpenSSH 无法使用密钥对进行身份验证

问题

当我尝试配置在 Ubuntu 上运行的 OpenSSH-Server 的密钥对身份验证时,系统仍然提示我输入密码。

我已经使用 生成了密钥对,ssh-keygen -t rsa并且没有设置密钥密码。然后,我使用 将公钥(重命名为 JNNIntelNUC)复制到 Ubuntu 服务器。一切似乎都很顺利,我可以在 中看到公钥内容。ssh-copy-id -i <private key file> [email protected]~/.ssh/authorized_keys

然后,我尝试从客户端建立连接,但仍然提示输入密码。ssh -i <private key file> [email protected]

有任何想法吗?

我检查过的内容

  • 我已经卸载了 OpenSSH-Server,删除了所有配置文件,并进行了全新安装
  • 我已检查文件和文件夹权限。调试消息并未表明存在权限问题。
  • 我尝试生成 ed25519 密钥而不是 rsa 密钥,但没有任何变化
  • 我检查了服务器上的 sshd_config 文件。它默认使用PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys。我甚至尝试使用相同的手动设置覆盖它们。

调试输出

以下是相关的输出ssh -I <private key file> [email protected] -v

debug1: Will attempt key: JNNIntelNUC ED25519 SHA256:CiXH3VTQ5ZWyFOwJe2nfffbwY+/cv8OWICj5iDQ5pKs explicit
debug2: pubkey_prepare: done
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected]>

答案1

唉,确实是权限问题。我以为带有 -v 标志的 ssh 命令会指出这是权限问题,但事实并非如此。问题在于服务器上家庭用户目录的权限。

chmod go-w /home/*username* #<-- This is the one I was missing
chmod 700 /home/*username*/.ssh
chmod 600 /home/*username*/.ssh/authorized_keys

我能够通过检查 SSH 守护进程的日志文件来找到错误消息grep 'sshd' /var/log/auth.log

相关内容