我有一个使用 Ubuntu 12.10 设置的服务器。除了 SSH 端口转发之外,其他一切都运行良好。
我使用以下命令将一些 VNC 服务器转发到我的电脑:
ssh -L 5900:node:5900 adminuser@server
效果很好。
但对于其他用户来说情况并非如此:
ssh -L 5900:node:5900 someotheruser@server
该用户可以连接到服务器(可以登录并执行某些操作),但端口不是转发,即gvncviewer localhost
没有完成(说已连接到服务器 但从不要求输入密码)。
我必须做什么才能允许其他(或选定的)用户转发?
编辑:使用我在拨打电话并连接时ssh -vv ...
收到以下消息gvncviewer localhost
管理用户:
debug1: Connection to port 5900 forwarding to 10.100.0.8 port 5900 requested.
debug2: fd 9 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug1: channel 3: new [direct-tcpip]
debug2: channel 3: open confirm rwindow 2097152 rmax 32768
... -----> It works
为了其他用户我得到:
debug1: Connection to port 5900 forwarding to 10.100.0.8 port 5900 requested.
debug2: fd 9 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug1: channel 3: new [direct-tcpip]
-----> Here it hangs for a long time...
channel 3: open failed: connect failed: Connection timed out
debug2: channel 3: zombie
debug2: channel 3: garbage collecting
debug1: channel 3: free: direct-tcpip: listening port 5900 for 10.100.0.8 port 5900, connect from 127.0.0.1 port 39009, nchannels 4
显然,问题是由 VNC 服务器引起的,而不是 ssh 引起的。
答案1
我尝试撰写一个答案,以便我们可以将这个问题标记为已解决。
要检查连接,请使用一个或多个-v
选项运行 ssh,如下所示:
ssh -v ...
或者
ssh -vvv ...
检查日志,是因为用户无法(本地)连接到端口 5900。
尝试看看是否可以本地连接:
ssh someotheruser@server
当你在服务器上有用户的 shell 时,尝试
telnet 10.100.0.8 5900
准备从另一个 ssh 会话中终止 telnet,即使它能工作,也可能会挂起(如果它能工作,它应该会显示类似
Trying 10.100.0.8...
Connected to localhost.
Escape character is '^]'.
RFB 003.007
如果无法连接,问题就不在于 ssh 端口转发,而是 VNC 服务器不接受来自用户的连接。