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

时间:2012-09-04 06:34:50

标签: ssh ssh-keys

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

我在capistrano中遇到一个功能,即使用本地计算机的密钥对来提取服务器的更新,ssh_options[:forward_agent] = true

我该如何做这样的事情并将我本地机器的密钥对转发到我正在进入SSH的服务器上,以便我可以避免为每个新站点添加密钥到github / bitbucket。

3 个答案:

答案 0 :(得分:53)

结果非常简单,完整指南就在这里Using SSH Forwarding

实际上,如果文件不存在,则需要创建~/.ssh/config文件。

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

示例代码:

Host example.com
    ForwardAgent yes

让SSH生活更轻松。

答案 1 :(得分:19)

  1. 创建〜/ .ssh / config
  2. 填写(主机地址是您要允许转发信用卡的主机的地址):

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

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

答案 2 :(得分:1)

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