使用 netcat 穿越防火墙?

使用 netcat 穿越防火墙?

我有一台位于防火墙后面的机器。这是我的机器,我已经设置了 ssh,但它完全被防火墙包围了。我的解决方案是使用基于 cron 设置的反向 shell,如果使用 netcat 失败,则重新连接。命令是bash -i >& /dev/tcp/myhostname.duckdns.org/10000 0>&1和 在我的本地计算机上nc -l 10000。到目前为止,这一直有效,因为我可以用命令告诉它加入我的私人 VPN。由于某种原因,该命令不起作用。因此,我可以通过生成的 bash shell“登录”,但我无法 ssh 返回我的计算机,因为Pseudo-terminal will not be allocated because stdin is not a terminal.我从未在该系统上设置过 ssh 密钥,它不允许我用密码登录。

因此,我一直在尝试使用 netcat 寻找解决方案,但一直没有成功。我设想的情况是这样的:

[服务器] ---netcat--> [我的电脑:端口 1]

这样我就可以借助它登录 sshd 服务器并修复任何需要修复的问题。但我不知道可以完成此操作的 netcat 命令。有什么帮助吗?

答案1

为互联网的其他人(和我自己)找到了答案。以下是如何仅使用 netcat 实现端口转发(已验证可在 OS X El Capitan 上运行):

在防火墙(传入)后面的服务器上:

nc localhost 22 >& /dev/tcp/<your-hostname>/<open port on local computer, i.e. 9000> 0>&1

在本地计算机上:

cd /tmp; mkfifo backpipe
nc -l 9000 0<backpipe | nc -l 9001 | tee backpipe

在本地计算机上,单独的终端:

ssh localhost -p 9001

相关内容