使用来自不同账户的 ssh_key 进行 SSH

使用来自不同账户的 ssh_key 进行 SSH

是否有办法让用户使用 ssh_keys 以其他用户身份进行 ssh?例如,我有主机 AB 和 C。

User X SSHes from A to B as himself ( A -- as X --> B )
Now the user wants to SSH to C from B but as a diff account ( Y ) B --- as Y ---> C 

我将密钥存储在 /home/Y/.ssh/ [id_rsa | id_rsa.pub]

现在,当 X 在 B 上运行时,ssh Y@C它会从 Y 中选择 SSH 密钥吗?或者应该在命令中使用 -i 标志指定密钥,例如ssh Y@C -i /home/Y/.ssh/id_rsa

第一个对我来说不起作用,它要求输入密码,当我将密钥复制到我的主目录路径,即进入/home/X/.ssh/并授予权限时,它才起作用。

理想情况下,我希望允许任何人以 Y 的身份通过 SSH 连接到 B,再通过 SSH 连接到 C。我不想将密钥复制到每个人的主目录中。我该怎么做?谢谢。

答案1

这正成为ssh授权方面越来越常见的误解。仅仅在远程服务器上拥有公钥文件并不能提供任何人使用相应的私钥进行身份验证的能力。

执行man sshd并搜索有关authorized_keys文件的信息。remoteserver:~remoteuser/.ssh/authorized_keys远程服务器的 ssh 守护程序在决定接受哪些私钥进行入站身份验证时会参考此文件。

您不需要将私钥复制到所有用户的主目录中;您需要收集所有用户的公钥副本,并将它们放在 中C:~Y/.ssh/authorized_keys,每行一个密钥。然后用户可以ssh Y@C;尽管取决于哪个他们给您的(或您收集的)公钥文件,他们可能需要指定匹配的私钥-i /home/X/.ssh/id_rsa_relevant_private_key

如果您甚至不想这样做,您应该允许 C 上的所有(相关)用户sudo /bin/su - Y;让他们以自己的身份登录,然后用来sudo更改身份。

编辑按照您的以下评论:是的,它会:但它也会使任何用户对该帐户的访问权限都无法撤销,因为只有一个密钥。这是一个维护和安全的噩梦,你在任何情况下都不应该这样做。

sudo如果您也有同样的感受,我在上面提出了一个建议。

答案2

SSH 授权基本上为每个用户提供 3 个文件 id_rsa - 用于授权的私钥 id_rsa.pub - 公钥 authorized_keys - 包含用于登录的公钥的文件。

将 X 用户公钥放在 C 服务器上属于 Y 用户的 authorized_keys 中。记住正确的权限!

要让所有用户无需密码即可访问,您需要他们的公钥。这里没有解决方法,但复制粘贴不是最好的方法。使用您选择的 atomation 工具。

PS:读取其他用户的密钥一点也不安全。保持简单 :)

相关内容