【发布时间】:2012-08-15 16:44:34
【问题描述】:
我通过 ssh 连接到一个共享主机 (WebFaction),然后使用 ssh-agent 建立与一个 mercurial 存储库 (BitBucket) 的连接。我这样称呼代理:
eval `ssh-agent`
然后这会喷出代理的 pid 并设置其相关的环境变量。然后我使用 ssh-add 如下添加我的身份(在输入我的密码后):
ssh-add /path/to/a/key
我的 ssh 连接最终超时,我与服务器断开连接。当我重新登录时,我无法再连接到 Hg 服务器,所以我这样做了:
ps aux | grep 1234.*ssh-agent`
kill -SIGHUP 43210
然后重复帖子顶部的两个命令(即使用eval 调用代理并调用ssh-add)。
我确信有一个成熟的习惯用法可以避免此过程并保持对最初生成的代理的“引用”。我尝试将第一个命令的 I/O 重定向到一个文件(希望在我的 .bashrc 中找到它),但我只得到了代理的 pid。
如何避免每次 ssh 进入主机时都必须经过这个过程?
我的 *NIX 技能较弱,因此欢迎对帖子的任何方面提出建设性的批评,而不仅仅是我使用 ssh-agent。
【问题讨论】:
-
您可能只想在本地运行您的代理并改用agent forwarding。
-
我从未使用过 BitBucket,但代理转发在 Github 上运行良好。我想 git-over-ssh 和 hg-over-ssh 并没有那么不同。老实说,它应该只是工作(tm),因为代理转发是一个 ssh 的事情。
-
是时候升级到 VPS 而不是共享主机了?
-
是的,我一直在使用Linode 和 EC2。总而言之,我对WebFaction 提供的访问和服务水平感到满意。事后看来,我可能应该将此发布到 ServerFault。将标记它以进行迁移。
标签: ssh-agent