我的台式家用电脑(见下图)通过以下方式连接SSH 到 Office 服务器(当然是通过互联网)。
我连接到该服务器从我的家用电脑(运行 Linux)通过使用OpenSSH 客户端从 Linux(请注意-g
“网关”开关):
ssh MyUser@OfficePublicIP -L 22222:172.26.0.10:22 -g
因此,当连接建立后,我有一个正在运行的 SSH到服务器的隧道对于我的局域网:
luis@HomeDesktop:~$ netstat -ano | grep "22222" -i
tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN off (0.00/0/0)
现在我可以去我的家用笔记本电脑并通过我的家庭桌面(运行 Windows)使用 PuTTY 打开到办公室服务器的 SSH 会话,操作如下:
PuTTY 192.168.0.101 -P 22222
该过程如下所示方案(沿着黑线箭):
这问题是:我需要运行 Windows在我的家用电脑上,而不是 Linux。我当然更喜欢使用这油灰SSH 客户端(我喜欢它的终端可配置性)。
但是 Putty v0.63 似乎没有这个 -g (网关)允许外部连接到转发(隧道)端口的选项。
我已经通过 putty 帮助 .chm 文件进行了研究,但 Putty 及其相关工具 PLink 似乎都没有此选项。
有人知道吗如何开辟隧道从我的家用台式机连接到办公室服务器,但是继续使用PuTTY?
答案1
嗯...事实上,如果你想要的是只有整洁的 PuTTY 窗口在远程 SSH 会话中写入,您只能使用它来执行此操作,并使用(同时在另一个控制台中)任何其他SSH 客户端从 Linux 移植到 Windows。
例如,OpenSSH 客户端从赛格威应该可以正常工作:
$ ssh -V
OpenSSH_6.6p1, OpenSSL 1.0.1f 6 Jan 2014
$ ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
顺便说一下,语法与您在家用桌面上运行 Linux 时使用的语法相同。
ssh MyUser@OfficePublicIP -L 22222:172.26.0.10:22 -g
答案2
您可以修补/模拟网关选项是通过在主桌面上同时运行简单的端口转发器在另一个港口。
例如,我经常使用Windows 的端口转发(我更喜欢“旧命令行实用程序”,这样我就可以通过脚本自动执行它)。对于你的情况,假设 11111TCP 将是“过渡”端口:
c:\>trivial_portforward.exe 11111 127.0.0.1 22222
查看两个端口都在监听(在你的主桌面上):
c:\>netstat -ano | grep "11111" -i
TCP 0.0.0.0:11111 0.0.0.0:0 LISTENING 6724
netstat -ano | grep "22222" -i
TCP 127.0.0.1:22222 0.0.0.0:0 LISTENING 6028
现在,你可以这样做从你的笔记本电脑:
c:\>PuTTY 192.168.0.101 -P 11111
SSH 连接必须成功。同时您应该在控制台上看到trivial_portforward
确认信息:
received connection from 192.168.0.102
connection to 127.0.0.1:22222 established
注意:您必须使用127.0.0.1
而不是localhost
(请记住您的问题是 PuTTY 没有重定向,但是127.0.0.1
)。
答案3
使用Putty / Kitty:
putty.exe MyUser@OfficePublicIP -L 0.0.0.0:22222:172.26.0.10:22
请注意指定以下0.0.0.0:
部分any host
传入连接-g
到服务器上的 SSH 隧道。这相当于OpenSSH。
netstat
请注意Windows 机器上的命令结果(这次是正确的) :
C:\>netstat -ano | grep "22222" -i
TCP 0.0.0.0:22222 0.0.0.0:0 LISTENING 6028