反向 ssh-agent 转发。使用远程 ssh 密钥

Col*_*son 1 ssh ssh-keys ssh-agent

ssh-agent在密钥服务器上有我的 github.com 私有 ssh 密钥。在 NAT 后面的家用计算机上,我想运行git pull并使用我的 github ssh 密钥。

我知道这样做的唯一方法是 ssh 进入密钥服务器并转发端口 22,然后在转发代理的同时 ssh 回到我的家用计算机,然后git pull像这样在新的 shell 中运行:

home$ ssh keyserver -R10022:localhost:22
keyserver$ ssh -A localhost -p10022
home$ git pull
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来使用远程 ssh 密钥?

kas*_*erd 5

我在与您类似的场景中使用了两种不同的方法。

  1. 在本地启动代理
  2. 转发到服务器
  3. 使用 ssh-add 将服务器中的密钥添加到您的本地代理(最好具有有限的生命周期)
  4. 从服务器注销
  5. 根据需要多次使用本地代理的密钥

或者

  1. 在本地启动代理
  2. ssh 服务器 cat 密钥文件 | ssh 添加 /dev/stdin

如果服务器的配置方式永远不会让您的密钥离开服务器,则上述方法都不起作用。在这种情况下,没有任何解决方案,这比您自己的方法更简单。但是有替代方案,可以提供更好的用户体验和/或安全性。

此命令将打开您在自己的示例中使用的同一对 ssh 连接。但是然后返回到启动 shell,您可以在其中使用转发的代理。

export $(grep -m1 ^SSH_AUTH_SOCK= <(
ssh -n -R10022:localhost:22 keyserver ssh -A localhost -p10022 "'env ; sleep 99999'"))
Run Code Online (Sandbox Code Playgroud)