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

Sat*_*har 43 ssh ssh-keys

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

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

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

Sat*_*har 55

事实证明这非常简单,完整的指南就在这里使用SSH转发

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

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

示例代码:

Host example.com
    ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)

使SSH生活更轻松.

  • 答案中链接了很棒的文章; 总结一下OSX用户,您可能需要`sudo vim/etc/ssh_config`并删除`ForwardAgent no`主机通配符禁用,然后删除`ssh-add~/.ssh/your_key`以允许本地代理转发该身份. (9认同)
  • 在我的OSX El Capitan上我根本不需要乱用/ etc/ssh_config,但我确实需要在转发对我有用之前运行`ssh-add`. (9认同)
  • @ the0ther你救了我的命! (2认同)

小智 23

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

    Host [host address]
         ForwardAgent yes
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果您还没有运行ssh-agent,请运行它:

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

    eval "$(ssh-agent)"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将要转发的密钥添加到ssh代理:

    ssh-add [path to key if there is one]/[key_name].pem
    
    Run Code Online (Sandbox Code Playgroud)
  6. 登录远程主机:

    ssh -A [user]@[hostname]
    
    Run Code Online (Sandbox Code Playgroud)
  7. 从这里开始,如果您登录到另一台接受该密钥的主机,它将正常工作:

    ssh [user]@[hostname]
    
    Run Code Online (Sandbox Code Playgroud)

  • 也可以一次性使用“ssh -o ForwardAgent=yes root@xxxx”。 (2认同)

Nek*_*Nek 9

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

ssh-add
ssh -A [username]@[server-address]
Run Code Online (Sandbox Code Playgroud)