一位用户的 SSH 密钥失败

Eli*_*Eli 3 debian ssh user-management

我刚刚设置了一个新的 Debian 服务器。我禁用了 root SSH 和密码身份验证,因此您必须使用密钥文件。

对于我的主要用户,一切都按预期工作。我使用ssh-keygen -t dsa并获得了自己的公钥和私钥。将一个放在授权密钥中,将另一个放在本地的 pem 文件中。

我想创建一个可以用来部署东西的用户,所以我做了基本相同的过程。我adduser编辑它,创建一个.ssh文件夹,运行ssh-keygen -t dsa(我也尝试过 RSA),将密钥放在适当的位置。

没运气。我收到一个Permission denied (publickey)错误。当我使用与有效帐户完全相同的密钥时,同样的错误。当我启用密码认证时,我可以使用密码通过 SSH 登录。

我该如何调试?

编辑

详细的 ssh 输出(deployer.pem 是正确的键):

debug2:密钥:/Users/eli/.ec2/deployer.pem (0x100126830)
debug2:密钥:/Users/eli/.ec2/deployer.pem (0x100126b30)
debug2:密钥:/Users/eli/.ec2/deployer.pem (0x0)
debug1:可以继续的身份验证:publickey
debug3:重新开始,传递不同的列表公钥
debug3:首选公钥,键盘交互,密码
debug3:authmethod_lookup 公钥
debug3:剩余首选:键盘交互,密码
debug3:authmethod_is_enabled 公钥
debug1:下一个身份验证方法:publickey
debug1:提供公钥:/Users/eli/.ssh/id_rsa
调试 3:send_pubkey_test
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey
debug1:提供公钥:eli.pem
调试 3:send_pubkey_test
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey
debug1:提供公钥:/Users/eli/.ec2/deployer.pem
调试 3:send_pubkey_test
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey
debug1:提供公钥:/Users/eli/.ec2/deployer.pem
调试 3:send_pubkey_test
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey
debug1:尝试私钥:/Users/eli/.ec2/deployer.pem
debug1:读取 PEM 私钥完成:输入 DSA
debug3:sign_and_send_pubkey
debug2:我们发送了一个公钥包,等待回复
debug1:可以继续的身份验证:publickey
debug2:我们没有发送数据包,禁用方法
debug1:没有更多的身份验证方法可以尝试。
权限被拒绝(公钥)。

Phi*_*ack 6

两部分:首先,在您的 ssh 服务器上打开调试。编辑/etc/ssh/sshd_config并将 LogLevel 增加到 DEBUG。然后强制您的 ssh 服务器使用killall -HUP <sshd pid>.

这将导致服务器向您的/var/log/secure和/或/var/log/auth日志文件添加更多详细信息。

其次(实际上你不能先尝试这个),增加客户端的调试级别。ssh 进入框

$ ssh -vvv hostname

这将打印出更多有关进程失败位置的信息。

如果您确实在 ssh 服务器上调高了调试级别,请不要忘记在完成后将其调低。

  • 感谢调试帮助,真正的问题是我在服务器上的 .ssh 目录具有疯狂的权限。但是,其中的所有文件都具有正确的权限。 (2认同)