使用不同用户的 SSH 进行端口转发:如何调试连接问题?

使用不同用户的 SSH 进行端口转发:如何调试连接问题?

我有一个使用 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 服务器不接受来自用户的连接。

相关内容