我正在跟进此资源设置类似 ssh 的代理服务器
我的设置与帖子中提到的完全一样:
Remote Server A
Machine-1
Machine-2
Machine-1 是堡垒服务器,我可以从它通过 ssh 连接到远程服务器(使用身份文件)
Machine-2 可以使用密码连接到 Machine-1。
要求:
通过 Machine-1 从 Machine-2 连接到远程服务器(A)
Machine-2 <--> Machine-1 <--> Remote Server(A)
以下是我的命令(从 machine-2 运行此命令)
ssh -o "ProxyCommand=ssh -W user2@%h:%p user1@machine-1" user2@remote_server
但我还没有看到成功。
我在
channel 0: open failed: connect failed: nodename nor servname provided, or not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
我并不经常这样做,所以我不知道哪里出了问题。但根据资源,我认为完成的步骤是正确的。
答案1
你不需要user2@
中的部分ProxyCommand
。这应该可行:
ssh -o "ProxyCommand=ssh -W %h:%p user1@machine-1" user2@remote_server
但是,为此编写配置可能更容易。此外,如果您使用ProxyJump
而不是ProxyCommand
,配置将更易于阅读。将这些行写入您的~/.ssh/config
文件:
Host machine-1
User user1
Host remote_server
User user2
ProxyJump machine-1
之后,您只需发出ssh remote_server
命令即可登录remote_server
,用作machine-1
垫脚石。