我曾经通过 VNC 和通过 C 的 SSH 隧道从 A 连接到系统 B。
我执行以下操作:
在BI中启动vncserver:
vncserver
假设我得到了:12
在 AI 中打开 ssh 隧道:
ssh -v -C -L 5912:B:5912 user@C
在 AI 中启动我的 vnc 客户端:
vinagre localhost:12
但这不再起作用,因为当我在与我的 ssh-tunnel 关联的终端中启动 vinagre 时,我得到:
channel 3: open failed: connect failed: No route to host
我知道上周系统出了点问题,但我不知道发生了什么变化(我不是计算机管理员),也许 IP 地址已经更改,但我已经删除了
~/.ssh/know_hosts
以避免出现问题。我会很感激任何帮助或提示
我已经通过运行检查了 self-vnc 是否正常工作
vncviewer localhost:12
在系统 B 上
我做了一些测试,发现如果我尝试建立隧道并连接到另一个用户打开的会话(使用另一个数字,例如 :6),我可以成功连接:当然,我无法登录,因为我没有正确的密码,但至少 vnc 客户端会提示输入密码,而且我没有看到任何消息“没有到主机的路由”。那是什么意思?看起来这个 vnc 东西只在某些端口上不起作用,不是吗?
显然,系统管理员将可访问的 vnc 端口范围设置为 5900-5910,但 VNC 服务器为我分配了一个远高于该值的端口号。
答案1
简单更新一下为什么您的端口超出了该端口范围 - 当启动 vncserver 时,您分配的端口号是 5900 + N,其中 N 是返回的 VNC 服务器号。示例:
vncserver
New 'localhost:1' desktop is localhost:1
在这种情况下,您的端口将是 5901。在您的示例中,您的服务器正在使用 5912,这超出了您的端口范围。
答案2
正如编辑的问题和 Byob 的回答所表明的那样,VNC 服务器确实有可能分配了超出防火墙允许范围的高端口号。
不过,还是有可能的,因为我意识到确实有一个路由错误可能位于主机或路由器的路由表之类的地方。相关对话位于Google 群组:
两个系统的目标工作站的路由不同 (...)。故障 (...) 要么在路由器上,要么在工作站上,它要么是遗漏故障(您在路由表中丢失了一条路由),要么是重叠故障(您在路由表中添加了一条错误的路由)。
还要确保B
确实可以访问。
答案3
显然,系统管理员将可访问的 vnc 端口范围设置为 5900-5910,但 VNC 服务器为我分配了一个远高于该值的端口号。