62

我通过 SSH 手动部署网站,我在 github/bitbucket 中管理源代码。对于每个新站点,我目前正在服务器上生成一个新的密钥对并将其添加到 github/bitbucket,以便我可以从服务器中获取机会。

我在 capistrano 中发现了一个使用本地机器的密钥对来拉取更新到服务器的功能,它是ssh_options[:forward_agent] = true

我该如何做这样的事情并将我的本地机器的密钥对转发到我正在通过 SSH 连接的服务器,这样我就可以避免将密钥添加到每个新站点的 github/bitbucket 中。

4

4 回答 4

76

原来这很简单,完整的指南在这里使用 SSH 转发

~/.ssh/config本质上,如果文件不存在,您需要创建一个文件。

然后,添加主机(文件中的域名或IP地址并设置ForwardAgent yes

示例代码:

Host example.com
    ForwardAgent yes

使 SSH 生活变得更加轻松。

于 2012-09-13T15:02:30.620 回答
45
  1. 创建 ~/.ssh/config
  2. 填写它(主机地址是您希望允许将凭据转发到的主机的地址):

    Host [host address]
         ForwardAgent yes
    
  3. 如果您尚未运行 ssh-agent,请运行它:

    ssh-agent
    
  4. 获取该命令的输出并将其粘贴到终端中。这将设置代理转发工作需要设置的环境变量。或者,您可以将此和步骤 3 替换为:

    eval "$(ssh-agent)"
    
  5. 添加要转发到 ssh 代理的密钥:

    ssh-add [path to key if there is one]/[key_name].pem
    
  6. 登录远程主机:

    ssh -A [user]@[hostname]
    
  7. 从这里,如果您登录到另一个接受该密钥的主机,它将正常工作:

    ssh [user]@[hostname]
    
于 2017-09-18T21:20:34.360 回答
1

配置文件非常有用,但代理转发的技巧就是ssh-add命令。似乎这必须在任何远程连接之前或重新启动计算机之后初始触发。要永久添加密钥,请尝试用户 daminetreg 的以下解决方案: 在 Ubuntu 上使用 ssh-add 永久添加私钥

于 2017-04-24T08:47:55.230 回答
0

要使用默认身份(id_rsa)简单地使用它,您可以使用以下几个命令:

ssh-add
ssh -A [username]@[server-address]
于 2021-11-17T18:06:30.117 回答