关于ssh密钥:如何在SSH会话中转发本地密钥对?

How to forward local keypair in a SSH session?

我通过ssh手动部署网站,在github/bitback中管理源代码。对于每个新站点,我当前都在服务器上生成一个新的密钥对,并将其添加到github/bitback中,这样我就可以从服务器上获得机会。

我在Capistrano中遇到了一个使用本地机器的密钥对将更新拉到服务器的特性,即ssh_options[:forward_agent] = true

我该如何做这样的事情,并将本地机器的密钥对转发到我要ssh访问的服务器,这样我就可以避免为每个新站点向github/bitback添加密钥。


这是一个非常简单、完整的使用ssh转发的指南。

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

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

样例代码:

1
2
Host example.com
    ForwardAgent yes

让ssh的生活更轻松。


  • 创建~/.ssh/config
  • 填写(主机地址是要允许将凭据转发到的主机的地址):

    1
    2
    Host [host address]
         ForwardAgent yes
  • 如果尚未运行ssh代理,请运行它:

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

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

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

    1
    ssh -A [user]@[hostname]
  • 从这里,如果您登录到另一个接受该密钥的主机,它将只起作用:

    1
    ssh [user]@[hostname]

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