好像之前有人问过类似的问题,但我遇到的问题没有被提出或回答,作为其他问题的答案的一部分。所以...
我正在使用运行 Ubuntu 的 Amazon EC2 实例,并且我已经弄清楚了如何使用“ubuntu”登录使用 PuTTY 获得 SSH 访问权限。我想我可以简单地进行一些用户添加,并在其他用户的每个主文件夹中添加“.ssh/authorized_keys”,就像在“ubuntu”主文件夹中一样,然后使用其他用户名(但使用相同的私钥)的 SSH 就可以顺利运行 - 但这种情况并没有发生(我收到了“服务器拒绝我们的密钥”消息)。
关于 SSH 密钥配对如何工作,我似乎还有一些不清楚的地方...有什么想法吗?
快速摘要:
- 使用“ubuntu”作为用户名通过 PuTTY 进行 SSH 访问 - 工作正常。
- 创建其他用户,将“.ssh/authorized_keys”从“ubuntu”主文件夹复制到其他用户主文件夹,并使用相同的私钥进行 SSH(使用不同的用户名登录) - 不起作用。收到“服务器拒绝我们的密钥”消息。
更新:我已编辑文件“/etc/ssh/sshd_config”以取消注释该行:
AuthorizedKeysFile %h/.ssh/authorized_keys
(我没有意识到默认情况下会对其进行评论),但仍然没有运气。如果这是一个建议,我只是想提一下...
UPDATE2-重要提示:感谢 Nikolay 的回答,我意识到我忽略了文件的权限。虽然权限不是问题的关键(我认为),但事实证明,当我使用须藤将“.ssh/authorized_keys”复制到其他添加的用户文件夹,新创建的文件夹和文件的所有者实际上是根。现在的问题似乎是 - 我如何更改文件夹/文件的所有者(因为非 root 用户很可能无法检查由根)?我会搜索一下,看看是否能找到答案……
UPDATE3-重要:我已将“.ssh”和“authorized_keys”的权限以及所有者和组从根到其他用户,但使用用户名时其他用户尝试 SSH 时,我仍然收到“服务器拒绝我们的密钥”消息。抱歉,我过早添加了答案部分……从逻辑上讲,提供的答案似乎(现在仍然似乎)是正确的答案,所以我说在我测试之前就已经回答了……
UPDATE4-重要提示:Nickolay 的答案确实是正确的(我说 UPDATE3 中没有)。我的问题(在我遵循 Nickolay 的答案之后)实际上与任何 SSH 警告无关。当我创建其他用户帐户,我不小心将 shell 指定为/bin/bash/
而不是/bin/bash
(请注意额外的/)。我之所以遇到这种情况,是因为我所做的所有工作都是从“ubuntu”帐户进行的,在感到沮丧之后,我尝试在使用 ubuntu 进行 SSH 后直接登录到 otheruser - 它返回错误“无法执行 /bin/bash/:不是目录”。在使用 更改 shell 后chsh -s /bin/bash otheruser
,我能够从 ubuntu 登录到 otheruser,但更有趣的是这使得我可以使用 otheruser 作为用户进行 SSH 而不会收到“服务器拒绝我们的密钥”消息。所以……无法实例化要使用的 shell 不知何故返回了拒绝密钥消息。我是否应该在某个地方提醒大家注意这一点……?无论如何,再次感谢 Nickolay。
回答:Nickolay 的回答涵盖了在这种情况下需要做的事情,包括使用命令chown
来更改文件夹/文件的所有权,如所提到的关联在他的回答下。 (我也使用了该chgrp
命令,因为该组也是 root)
以下是我使用的步骤(您可能需要在这些命令前面加上sudo
):
- chmod go-w 其他用户 其他用户/.ssh
- chmod 600 其他用户/.ssh/authorized_keys
- chown ‘其他用户’ 其他用户/.ssh
- chown ‘其他用户’ 其他用户/.ssh/authorized_keys
- chgrp ‘其他用户’ 其他用户/.ssh
- chgrp‘其他用户’其他用户/.ssh/authorized_keys
注意:最后两个命令用于更改“.ssh/”文件夹和“authorized_keys”文件所关联的组。您可能希望它们是其他内容,但我希望使它们与该用户主文件夹中的其他文件/文件夹保持一致。
答案1
您还应该为 .ssh 文件夹和 authorized_keys 设置正确的权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys 此外,这些文件的所有者应该与尝试登录的用户相同。