如何在SSH会话中转发本地密钥对?

如何在SSH会话中转发本地密钥对?,ssh,ssh-keys,Ssh,Ssh Keys,我通过SSH手动部署网站,我在github/bitbucket中管理源代码。对于每个新站点,我目前正在服务器上生成一个新的密钥对,并将其添加到github/bitbucket中,这样我就可以从服务器上获取机会 我在capistrano中发现了一个特性,即使用本地机器的密钥对将更新拉到服务器,这就是ssh\u options[:forward\u agent]=true 我怎样才能做到这一点,并将本地机器的密钥对转发到我正在使用SSH的服务器上,从而避免为每个新站点向github/bitbucke

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

我在capistrano中发现了一个特性,即使用本地机器的密钥对将更新拉到服务器,这就是
ssh\u options[:forward\u agent]=true


我怎样才能做到这一点,并将本地机器的密钥对转发到我正在使用SSH的服务器上,从而避免为每个新站点向github/bitbucket中添加密钥。

这非常简单,完整的指南就在这里

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

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

示例代码:

Host example.com
    ForwardAgent yes

使SSH的使用更加轻松。

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

  • 创建~/.ssh/config
  • 填写(主机地址是您希望将creds转发到的主机的地址):

  • 如果尚未运行ssh代理,请运行它:

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

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

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

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

    ssh [user]@[hostname]
    

  • 答案中链接的伟大文章;要为OSX用户总结,您可能需要
    sudo vim/etc/ssh_config
    并删除
    ForwardAgent no
    主机通配符禁用,然后
    ssh add~/.ssh/your_key
    以允许本地代理转发该标识。如果您需要,则添加
    echo'host example.com\n ForwardAgent yes'>~/.ssh/config将不起作用使用公共ip
    ssh node-1.example.com
    连接到ssh,然后使用代理转发尝试使用
    ssh${user}@$(hostname-s)
    跳转。它将询问您的密码。在我的OSX El Capitan上,我根本不需要乱用/etc/ssh\u config,但我确实需要运行
    ssh add
    ,然后转发才能为我工作。@0您救了我的命!还可以简单地
    ssh-o ForwardAgent=yesroot@x.x.x.x
    一次性使用。
    ssh [user]@[hostname]