通过 SSH 隧道运行远程命令

通过 SSH 隧道运行远程命令

我正在尝试在我的 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 并且一切正常!

相关内容