我有一台位於防火牆後面的機器。這是我的機器,我設定了 ssh,但它完全有防火牆。我的解決方案是使用基於 cron 的反向 shell 在使用 netcat 失敗時重新連線。該命令bash -i >& /dev/tcp/myhostname.duckdns.org/10000 0>&1
在我的本機電腦上是 and 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