我的 .ssh 文件夹中可以有多个 ssh 密钥吗?

use*_*449 50 mac ssh

我可以创建多个 ssh 密钥,并将它们重命名为用户友好的名称,以便我知道哪个密钥用于哪个网站等。

这安全吗?

例如:

github_id_rsa
github_id_rsa.pub
..
...
Run Code Online (Sandbox Code Playgroud)

它如何知道连接时要检查哪个键?

现在在我的电脑上,当我查看 known_hosts 时,它们似乎在主机名后都有相同的键??

小智 65

您可以修改文件 ~/.ssh/config 为不同的服务器使用不同的身份文件。在您喜欢的编辑器中编辑 ~/.ssh/config 并添加适合您情况的条目,如下所示:

Host *
IdentityFile ~/.ssh/id_rsa

Host *.github.*
IdentityFile ~/.ssh/github_id.rsa

Host *.someother.com
IdentityFile ~/.ssh/someother_id.rsa
Run Code Online (Sandbox Code Playgroud)

上面的第一部分设置了所有主机的默认值,其他部分覆盖了每个匹配模式的主机应该使用的内容。如果您为每个主机使用不同的用户名,那么您可以在该部分添加一个用户密钥,后跟遥控器上的用户名。

  • 无论目的地是 GitHub 还是其他站点,这都是对这个问题最有用的答案。 (3认同)
  • `chmod 400 ~/.ssh/id_rsa` 或 `chmod 400 ~/.ssh/foo_id.rsa` 可能是必要的。 (2认同)

小智 23

是的,您可以拥有不同的 ssh 密钥。在Help.GitHub - Multiple SSH Keys的 GitHub 帮助站点上有非常好的文档。本质上,您将使用 ssh-add 添加额外的密钥,以便代理可以使用它们。然后设置 ssh 主机配置,以便在此处查找到不同域的任何 ssh 连接并使用适当的密钥。祝你好运!

  • 链接不再有效 (2认同)
  • https://gist.github.com/jexchan/2351996 (2认同)

小智 11

您可以为具有多个用户帐户的任何站点设置多个 ssh 密钥

下面是我在GitHub.com开发中使用的示例

配置文件示例

#Personal account
 Host github.com-<personal-account-name>
 HostName github.com
 User git
 IdentityFile ~/.ssh/id_rsa_personal
 IdentitiesOnly yes



#Organization account
 Host github.com-<organization-name>
 HostName github.com
 User git
 IdentityFile ~/.ssh/id_rsa_work
 IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)

添加新原点时

个人账户

git remote add origin git@github.com-<personal-account-name>:<personal-account-name>/<repo-name>.git
Run Code Online (Sandbox Code Playgroud)

对于组织帐户

git remote add origin git@github.com-<organization-name>:<organization-name>/<repo-name>.git
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。