我通过SSH手动部署网站,使用github/bitbucket管理源代码。对于每个新站点,我当前会在服务器上生成一个新的密钥对,并将其添加到github/bitbucket中,以便我可以从服务器上拉取更改。
我在capistrano中发现了一项功能,即使用本地计算机的密钥对来拉取更新到服务器,这是ssh_options[:forward_agent] = true
我该如何做类似的事情并将我的本地计算机的密钥对转发到我正在SSH登录的服务器,以便我可以避免为每个新站点添加密钥。
这实际上非常简单,完整指南在使用SSH转发这里。
本质上,如果没有存在,您需要创建~/.ssh/config
文件。
然后,在文件中添加主机(可以是域名或IP地址),并设置ForwardAgent yes
。
示例代码:
Host example.com
ForwardAgent yes
使SSH的使用更加轻松。在文件中添加以下内容 (host address 是你想允许凭证转发到的主机地址):
Host [host address]
ForwardAgent yes
如果您尚未运行ssh-agent,请运行它:
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]
ssh -o ForwardAgent=yes root@x.x.x.x
。 - deed02392如果您想使用默认身份(id_rsa)来使用它,可以使用以下命令:
ssh-add
ssh -A [username]@[server-address]
ssh-add
就是答案。谢谢 - HerberthObregonssh-add
命令。似乎这必须在任何远程连接之前或计算机重启后初始触发。要永久添加密钥,请尝试用户daminetreg提供的以下解决方案:
在Ubuntu上使用ssh-add永久添加私钥
这是非常有用的:
ssh -i [私钥] -A [用户]@[主机]
你可以在bash_aliases或其他命令例程中设置一个命令。
sudo vim /etc/ssh_config
并删除ForwardAgent no
主机通配符禁用,然后执行ssh-add ~/.ssh/your_key
以允许本地代理转发该身份验证信息。 - cfedukessh node-1.example.com
连接并尝试使用代理跳转ssh ${user}@$(hostname -s)
,那么添加echo 'Host example.com\n ForwardAgent yes' >> ~/.ssh/config
将不起作用。它会要求您输入密码。 - Dimitri Kopriwa