通过带有 stdin/stdout 转发的跳转服务器与 GIT 建立 SSH 连接我正在尝试使用中间跳转服务器 (B) 建立从客户端服务器 (A) 到远程服务器 (C) 的连接,该服务器应该隐藏该连接的私有 ssh 密钥。
服务器 A 需要通过 ssh 访问某些资源(git),无需任何密码/ppk 身份验证:
$ git clone ssh://git@serverB:portB/some/repository.git -vvv
服务器 B 是一个容器化应用程序(docker 容器),其EXPOSE portB
CMD 如下:
$ ssh \
-v \
-o StrictHostKeyChecking=no \
-o ForwardAgent=yes \
-o TCPKeepAlive=yes \
-o ConnectTimeout=5 \
-o ServerAliveCountMax=10 \
-o ServerAliveInterval=15 \
-i /root/ssh-import/id_rsa \
-p $SSH_TUNNEL_PORT \
-L $LOCAL_HOST:$LOCAL_PORT:$REMOTE_HOST:$REMOTE_PORT \
$SSH_TUNNEL_USER@$SSH_TUNNEL_HOST \
-N
此配置不是 stdin/stdout 转发的代理,而是使用 ssh 隧道的端口转发。还尝试了-W
和-J
和-o ProxyCommand
,但最终出现以下错误:
$ ssh -i ./ed25519_ppk -W serverC:portC -p portB userB@serverB
... (after a connection attempt)
kex_exchange_identification: Connection closed by remote host
我该如何组织我的 CMD 和跳转服务器(B)配置来建立从服务器 A 到 C 的无密钥 ssh 连接?