在两个不同的帐户上使用相同的公共 ssh 密钥

Posted

技术标签:

【中文标题】在两个不同的帐户上使用相同的公共 ssh 密钥【英文标题】:using the same public ssh key on two different accounts 【发布时间】:2011-05-04 06:09:46 【问题描述】:

情况是这样的:我家有一台机器(我们称之为 house_machine),我的办公室有另一台机器(称之为 office_machine)。我使用 ssh 和 dsa 密钥身份验证并且没有密码身份验证从 office_machine 访问 home_machine。我已经在 home_machine 上设置了一个 ssh 服务器,并将在 office_machine 上生成的公钥添加到 home_machine 上的 authorized_keys 文件中。这很好用 - 我可以使用密钥从 office_machine SSH 到 home_machine,无需密码。

现在的问题是:当我访问其他办公室时,我希望能够通过使用属于 office_machine 的公钥访问 home_machine。即,我想将公钥 (id_dsa.pub) 放在 USB 驱动器上,然后将其复制到另一个办公室的 .ssh 目录中。从我在这个网站上读到的内容来看,其他人似乎已经能够做这种事情,但是它不起作用。当我尝试简单地将 id_dsa.pub 放在新机器上并执行 ssh -v user@home_machine 时,调试消息以:

debug1:提供公钥:.ssh/id_dsa
debug1:服务器接受密钥:pkalg ssh-dss blen 433
debug1:读取 PEM 私钥完成:输入 DSA
debug1:可以继续的身份验证:publickey
debug1:没有更多的身份验证方法可以尝试。
权限被拒绝(公钥)。

我的临时解决方案是在 home_machine 上的 sshd_config 中设置“PasswordAuthentication yes”,然后使用密码进入 home_machine。但是,这使使用密钥授权的意义无效。

提前致谢!

【问题讨论】:

【参考方案1】:

您需要复制的不仅仅是公钥 - 您还需要私钥。

在 ssh 中,您将公钥放在服务器端,但客户端需要拥有私钥。

您想要将 id_dsa 文件(不是 id_dsa.pub)复制到您的 USB 密钥(确保它受到密码保护,以防丢失!)。

然后您可以使用该密钥从任何有权访问该密钥的机器登录 home_machine:

ssh -i /path/to/id_dsa user@home_machine

(从您粘贴的内容来看,您可能已经在 office_machine 上拥有不同的私钥 - 您可能会考虑使用 ssh-agent)

此外,请检查 /var/log/secure 以了解您的 sshd 可能拒绝密钥身份验证的原因(这通常是 .ssh 目录及其祖先的权限问题)。

【讨论】:

感谢伙伴-确实有效。以防其他人阅读此内容,如果您想将 id_dsa 复制到您的 /home/userX/.ssh/ 目录中,您还需要在以 userX 身份登录时运行 exec /usr/bin/ssh-agent $SHELL 然后运行 ​​ssh-add,否则客户端现在不会知道新的私钥。 很好地调用代理 - 不同环境如何与代理交互的详细信息(假设它正在使用 - 不必如此)取决于操作系统和特定构建。或者,(除非您确定帐户非常安全,否则我不建议这样做),您可以删除密钥上的密码,然后消除对代理的需要。我使用代理在 linux 上启动我的窗口管理器,所以所有进程都已经有了代理连接。 OS X 无缝地为您处理钥匙串集成和代理。

以上是关于在两个不同的帐户上使用相同的公共 ssh 密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何在多台机器上使用相同的 ssh 密钥?

在 Windows 10 上为 GitHub 启用多个 SSH 密钥

为不同的 GitHub 帐户使用多个 SSH 密钥

GPG 与 SSH 密钥

如何处理多个 ssh 密钥

Github 使用 SSH 密钥提交