这是一个经常被问到并得到解答的问题。但是,这些解决方案对我来说不起作用,所以我想得到一些帮助来弄清楚为什么不起作用。我知道我过去曾成功地做到了这一点。
我看过: 通过 SSH 连接的 VNC 隧道
http://crl.ucsd.edu/handbook/vnc/
http://martybugs.net/smoothwall/puttyvnc.cgi
我已经将 PUTTY 配置如下:
我打开与服务器 A 的连接。然后
ssh -L 5901:localhost:5901 serverB
登录后,我开始 VNC 会话
-bash-4.1$ vncserver :1
New 'serverB:1 (balter)' desktop is serverB:1
Starting applications specified in /home/users/balter/.vnc/xstartup
Log file is /home/users/balter/.vnc/serverB:1.log
-bash-4.1$
我应该可以走了,所以我尝试 VNC 到localhost
或localhost:0
或localhost:5900
。连接失败。
有什么建议吗?
编辑:我应该补充说,serverB 位于防火墙后面,因此我需要使用 serverA 作为中介。
编辑2——根据Nikita的评论:netstat -inpt
serverB 上 的输出
-bash-4.1$ netstat -inpt
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
bond0 1500 0 25034847553 0 0 0 0 0 0 0 BMmRU
eth0 1500 0 7645087 0 0 0 148398 0 0 0 BMRU
eth4 1500 0 10494292891 0 0 0 0 0 0 0 BMsRU
eth5 1500 0 10644409020 0 0 0 0 0 0 0 BMRU
eth6 1500 0 14540554669 0 0 0 0 0 0 0 BMsRU
ib0 1500 0 5055 0 0 0 4267 0 1 0 BMRU
lo 65536 0 8932391289 0 0 0 8932391289 0 0 0 LRU
-bash-4.1$
我该如何解释这一点?
答案1
您是否忘记单击屏幕截图对话框中的“添加”按钮,以将前向规范实际添加到列表中?
您确定您的最新远程服务器使用 5901 吗?似乎应该如此,但在运行 vncserver 后使用 netstat 检查一下。
最好只使用一个转发。不要转发到本地主机,而是在 Putty 对话框中转发到服务器 B。您只需通过 SSH 连接到服务器 B 即可在那里运行 vncserver,无需转发任何内容。当然,服务器 B 的 vncserver 不应只在本地主机上监听。(SSH 转发代码解析服务器上的名称,因此服务器 B 应该只能在服务器 A 上解析,即使您在 Putty 对话框中使用它的名称)。