无法使用 SSH 隧道连接到 VNC 服务器

无法使用 SSH 隧道连接到 VNC 服务器

我有一个在 Ubuntu 18.04 上运行 xtightvnc 的 Linux 服务器。使用我的笔记本电脑,我可以在 Windows 上使用 PuTTY 建立 SSH 隧道连接,并通过 localhost:5901 建立与 vnc 的连接。这工作没有问题。在同一台笔记本电脑上,如果我启动到 Debian 9 并尝试使用以下命令复制连接:

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

我收到一个错误:

bind: Cannot assign requested address

使用详细选项运行相同的命令:

ssh - v -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

给出以下输出(我已缩短输出):

debug1: Local connections to LOCALHOST:5901 forwarded to remote 
address 127.0.0.1:5901
debug1: Local forwarding listening on 127.0.0.1 port 5901.
bind: Address already in use
debug1: Local forwarding listening on ::1 port 5901.
bind: Cannot assign requested address
channel_setup_fwd_listener_tcpip: cannot listen to port: 5901
Could not request local forwarding.
debug1: Requesting [email protected]
debug1: forking to background
debug1: Entering interactive session.
debug1: pledge: network

我不确定这意味着什么,但听起来好像我之前在 Windows 下打开的连接仍然处于活动状态?

我还尝试使用 PuTTY 在 Debian 上建立隧道,并使用与 Windows 下相同的设置。看来我可以使用相同的设置进行连接,并且可以连接到 vnc,尽管这在之前不起作用。 (也许在连接关闭后我不知道某种冷却设置仍然保持连接打开/分配地址?)

编辑:如果地址尚未重置,这是我在 Linux 上使用 PuTTY 收到的错误:

vnc错误

这里的主要问题可能是当我关闭 PuTTY 时,连接仍然处于活动状态(我刚刚测试了这一点,因为我仍然能够使用 localhost:5901 连接到 vnc)。我使用 退出 PuTTY 会话exit

的输出netstat -tulpn也可能相关:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
PID/Program name    
tcp        0      0 127.0.0.1:6342          0.0.0.0:*               LIS 
TEN      
21618/megasync      
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               
LISTEN      
21527/Xtightvnc     
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               
LISTEN      
21527/Xtightvnc     
tcp        0      0 127.0.0.53:53           0.0.0.0:*                 
LISTEN      
796/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               
LISTEN      
874/sshd            
tcp6       0      0 :::22                   :::*                    
LISTEN      
874/sshd            
udp    33024      0 127.0.0.53:53           0.0.0.0:*                           
796/systemd-resolve 

更新:

看起来一切都正常,但在我关闭与 PuTTY 的连接后,需要一段时间才能从 Windows 或 Linux 的其他实例建立另一个连接。如果有人知道如何加快这一进程,我将非常感激能听到解决方案。

更新2:

在linux下,我似乎可以有效地终止ssh隧道,例如通过使用pkill ssh(终止所有当前的ssh连接)。因此,PuTTY 似乎倾向于在注销时无法正确关闭到服务器的隧道。

答案1

看起来您有一些进程已经在侦听 5901。您可以使用另一个端口:

ssh -L 15901:127.0.0.1:5901 login@host

该命令将转发您的当地的端口 15901 至偏僻的端口 5901。因此您需要使用 VNC 客户端连接到 127.0.0.1:15901。

相关内容