![通过 SSH 隧道运行远程命令](https://linux22.com/image/1335091/%E9%80%9A%E8%BF%87%20SSH%20%E9%9A%A7%E9%81%93%E8%BF%90%E8%A1%8C%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4.png)
我正在尝试在我的 Mac OSX(“osx”)上通过中间主机(“网关”)设置到服务器(“目标”)的 ssh 隧道。此隧道需要有一个本地(osx)端口转发,以便我的 Windows XP VM(“vm”)可以通过它传输流量(使用代理程序)。因此最终它将是:
vm -> osx -> gateway -> target
我可以在 osx 上使用此命令行成功实现此目的:
ssh -p 7002 -L 7777:localhost:6677 -t [email protected] sh ./tunnel.sh target.tld;;
其中 tunnel.sh 是远程网关上的脚本,内容如下:
#!/bin/bash
/usr/bin/ssh -i ~manachi/.ssh/my.id -p 7002 -D 6677 manachi@${1}
但我一直试图在我的 osx 上的 ~/.ssh/config 中进行设置(这样我就可以直接输入'ssh 目标'),但我运气不太好。我的虚拟机似乎无法通过 osx 隧道建立隧道。以下是配置条目:
host target
HostName target.tld
Port 7002
User manachi
LocalForward 0:7777 localhost:6677
ProxyCommand ssh gateway nc %h %p
我不确定我的做法是否完全错误。我不确定 LocalForward 是否设置正确,或者我是否可以像那样在 ProxyCommand 中使用“nc”来替代第一个解决方案中的远程“ssh”命令,但任何帮助或提示都将不胜感激。
答案1
经过多次调整、试验和记录后,我通过更改线路设法使该隧道端到端运行:
LocalForward 0:7777 localhost:6677
到
DynamicForward 0:7777
因此最终的配置条目如下所示:
host target
HostName target.tld
Port 7002
User manachi
DynamicForward 0:7777
ProxyCommand ssh gateway nc %h %p
现在我只需输入
ssh target
然后在我的 XP 虚拟机上,我可以将我的 Proxifier 指向我的 macosxhost:7777 并且一切正常!