【问题标题】:ssh-agent across ssh sessions on shared host [closed]跨共享主机上的 ssh 会话的 ssh-agent [关闭]
【发布时间】: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


【解决方案1】:

简答:

通过在本地运行 ssh-agent 并添加身份,ssh -A user@host.webfaction.com 为远程主机上的安全 shell 提供本地代理的身份。

长答案:

正如查尔斯建议的那样,agent forwarding 是解决方案。

起初,我认为我可以发出ssh user@host.webfaction.com,然后在远程主机上的安全会话中,使用 hg+ssh 连接到 BitBucket 存储库。但是失败了,所以我调查了ForwardAgent and AgentForwardingEnabled flags

考虑到我必须在 .bashrc 中解决一个涉及将我的私钥保存在远程主机上的解决方法,我去寻找一个 shell 脚本解决方案,但被这个 answer in SuperUser 幸免于难,它完美,无需任何客户端配置即可工作(我不确定如何在 WebFaction 上配置 sshd 服务器)。

除此之外:在我的问题中,我发布了以下内容:

ps aux | grep 1234.*ssh-agent`
kill -SIGHUP 43210 

但这实际上效率低下,并且需要用户知道他/她的 uid(可通过 /etc/passwd 获得)。 pgrep 更容易:

pgrep -u username process-name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2015-05-07
    • 2021-08-21
    • 2015-07-29
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多