2012-09-04 37 views
32

我通过SSH手动部署网站,我在github/bitbucket中管理源代码。对于每个新网站,我目前都在服务器上生成一个新的密钥对,并将它添加到github/bitbucket中,这样我就可以从服务器获得机会。如何在SSH会话中转发本地密钥对?

我碰到一个功能在Capistrano的来使用本地计算机的密钥对拉动更新到服务器,这是ssh_options[:forward_agent] = true

我怎样才能做这样的事情,我的本地机器的密钥对转发给我的SSH服务器进入,以便我可以避免为每个新站点添加密钥到github/bitbucket中。

谢谢。

回答

45

事实证明,这是非常简单的,完整的指南在这里Using SSH Forwarding

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

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

示例代码:

Host example.com 
    ForwardAgent yes 

使SSH生活轻松了许多。

+5

伟大的文章链接在答案;总结OSX用户可能需要'sudo vim/etc/ssh_config'并删除'ForwardAgent no'主机通配符禁用,然后'ssh-add〜/ .ssh/your_key'以允许本地代理转发该身份。 – cfeduke

+0

添加'回声'主机example.com \ n如果您使用公共IP连接到ssh node-1.example.com,然后尝试跳转到''〜/ .ssh/config',则' ssh $ {user} @ $(hostname -s)'使用代理转发。它会询问您的密码。我的OSX El Capitan上的 – BigDong

+5

我根本不需要搞乱/ etc/ssh_config,但是我确实需要在转发工作之前运行'ssh-add'。 – the0ther

0

配置文件非常有帮助,但代理转发的技巧是执行ssh-add命令。看起来,这必须在任何远程连接之前或重新启动计算机之后进行初始触发。要永久添加键尝试从用户daminetreg以下解决方案: Add private key permanently with ssh-add on Ubuntu

10
  1. 创建的〜/ .ssh/config中
  2. 注满水(主机地址是要允许creds主机的地址转发至):

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

    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]