ec2-user
我刚刚使用 Amazon Linux 2 操作系统创建了一个 ec2 实例,然后使用 login:和关联的私钥登录到系统。接下来,我创建了一个新用户x
并将.ssh/authorized_keys
文件从ec2-user
主目录复制到x
用户主目录。最后,我将文件的所有权更改authorized_keys
为x
.
sudo ls -ald /home/x/.ssh
drwxrwxr-x 2 x x 29 Sep 18 16:42 /home/x/.ssh
和
sudo ls -al /home/x/.ssh/authorized_keys
-rw------- 1 x x 387 Sep 18 16:42 /home/x/.ssh/authorized_keys
x
现在,当我使用相同的私钥以用户身份登录时,我收到如下错误:
ssh -i /some/path/aws/privatekey.pem [email protected]
[email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
如何解决这个问题才能成功登录?
(该authorized_keys
文件是否也包含任何用户信息。)
类似的问题没有帮助:ssh:权限被拒绝(publickey、gssapi-with-mic)
答案1
drwxrwxr-x 2 x x 29 Sep 18 16:42 /home/x/.ssh
您/home/x/.ssh
具有组写入权限集,因此理论上组的另一个成员x
可能能够篡改目录的内容。因此,出于谨慎考虑,sshd
将忽略该authorized_keys
文件。
手册sshd(8)
页说:
〜/.ssh/authorized_keys
如果其他用户可写入该文件、~/.ssh 目录或用户的主目录,则该文件可能会被未经授权的用户修改或替换。在这种情况下,sshd 将不允许使用它,除非 StrictModes 选项已设置为“no”。
要解决这个问题:
chmod go-w / /home /home/x /home/x/.ssh
另外,/
当然/home
应该由 root 拥有。
用户可以授予其他人写入权限其他子目录他们的主目录,但主目录本身和~/.ssh/
子目录是安全敏感的,并且应该始终仅对拥有该目录的用户是可写的。主目录中有许多文件(例如~/.profile
、~/.bashrc
和类似的登录脚本),如果它们可供其他人写入,则可能会被用于邪恶目的。
在 SSH 开发之前,旧的/ /工具~/.rhosts
使用的文件具有类似的保护要求 - 如果没有得到充分的保护,同样会被忽略。rsh
rlogin
rcp