【问题标题】:Different SSH keys for different paths不同路径的不同 SSH 密钥
【发布时间】:2012-11-12 18:45:26
【问题描述】:

我正在尝试找到一种方法来使用不同的 ssh 密钥从 bitbucket 克隆不同的项目。我尝试使用 ssh_config,但我设法为 单个特定主机的连接定义了一个不同的 ssh 密钥only

我想要实现的是拥有

密钥 A 用于 bitbucket.org/myteam1/myproject

密钥 B 用于 bitbucket.org/myteam2/myotherproject

能帮我解决这个问题吗?

【问题讨论】:

  • 您必须选择一个 ssh 密钥。

标签: mercurial ssh key host ssh-keys


【解决方案1】:

最后我发现对我来说最好的解决方案是使用-e sshcommand 选项并在其中使用-i key 选项来指定我想要的私钥。

【讨论】:

    【解决方案2】:

    使用 ssh-agent 的最简单的方法。当您运行 ssh-agent 时,您会添加所有密钥,它会尝试每个密钥,直到其中一个有效。你的操作系统很可能已经在运行 ssh-agent,所以试试

    ssh-add /path/to/key1
    ssh-add /path/to/key2
    

    然后当您尝试连接时,如果任一密钥有效,您就在其中。如果您没有运行 ssh-agent,您可以使用(在 unix/OS X 上)启动它:

    eval $(ssh-agent)
    

    然后添加两个密钥文件。

    如果由于某种原因您无法忍受使用 ssh-agent,那么我找到了一个解决方法,它使用了一个有点棘手的 .ssh/config 文件。像这样的:

    Host myteam1.bitbucket.org
        Hostname bitbucket.org
        HostKeyAlias bitbucket.org
        IdentityFile ~/.ssh/keyA
    
    
    Host myteam2.bitbucket.org
        Hostname bitbucket.org
        HostKeyAlias bitbucket.org
        IdentityFile ~/.ssh/keyB
    

    然后,当您使用 hg clone ssh://hg@myteam2.bitbucket.org/myteam2/myproject 等虚假主机名克隆或推送 URL 时,ssh 将交换真实主机名和正确的密钥。

    但实际上,请改用ssh-agent

    【讨论】:

      【解决方案3】:

      您可以在存储库 hgrc 级别覆盖您的密钥

      Configuration files for Mercurial

      【讨论】:

      • 您不能直接在 hgrc 文件中指定 ssh 密钥。您可以在 [auth] 部分中为 http 连接指定用户/密码,但唯一需要的 key 是用于 https 证书身份验证的客户端证书——对于 ssh 则没有。
      猜你喜欢
      • 1970-01-01
      • 2021-03-09
      • 2013-02-20
      • 2021-01-27
      • 1970-01-01
      • 2021-09-09
      • 2023-04-03
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多