You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu16.04跨主机SSH端口转发访问GUI遇连接拒绝问题求助

解决SSH本地转发出现channel 2: open failed: connect failed: Connection refused的问题

这问题我碰到过好几次,咱们一步步排查解决:

1. 先确认测试机(test-PC)的80端口是否有服务监听

你用的转发规则是-L 8091:localhost:80,意思是把main-PC的8091端口转发到test-PC的localhost:80。如果test-PC上根本没有服务在监听80端口,自然会出现连接拒绝的错误。

在test-PC上执行以下命令检查80端口的监听状态:

netstat -tulpn | grep :80
# 或者用更现代的ss命令
ss -tulpn | grep :80

如果输出为空,说明80端口没有任何服务运行。这时候你需要:

  • 要么启动一个监听80端口的服务(比如Apache),但这和你要访问GUI的需求不匹配;
  • 要么换一个对应GUI服务的端口(比如VNC默认的5900、XRDP的3389,或者用X11转发的方式,下面会说)。

2. 验证test-PC的SSH转发配置是否生效

虽然你修改了/etc/ssh/sshd_config添加了AllowTcpForwarding yes,但要确保配置真的生效了:

  • 先检查配置文件有没有拼写错误(比如大小写、空格):
    grep -i "AllowTcpForwarding" /etc/ssh/sshd_config
    
    确保输出是AllowTcpForwarding yes(没有被注释掉,即行首没有#)。
  • 确认SSH服务已经重启:
    sudo systemctl restart ssh
    
    Ubuntu 16.04也可能用sudo service ssh restart,两种都试试。

3. 检查test-PC的防火墙设置

Ubuntu 16.04默认用ufw防火墙,虽然是本地端口转发,但偶尔会出现loopback接口被限制的情况:

  • 查看当前防火墙规则:
    sudo ufw status
    
  • 如果发现有规则阻止了localhost的80端口,可以临时关闭防火墙测试:
    sudo ufw disable
    
    如果关闭后问题解决,再重新配置ufw允许本地访问80端口:
    sudo ufw allow in on lo to any port 80
    sudo ufw enable
    

4. 针对“访问测试机GUI”的正确方案

其实你要访问GUI的话,用80端口的本地转发完全不对路,推荐两种更合适的方式:

方式一:SSH X11转发(轻量,适合单程序)

直接在main-PC上执行带X11转发的SSH命令:

ssh -X ikayyy@172.16.61.16

登录成功后,直接在终端里输入GUI程序的名字(比如gedit、firefox),程序界面就会显示在main-PC上。

注意:如果没反应,要确认test-PC上安装了xauth,main-PC上有X服务器(Ubuntu桌面版默认自带,服务器版需要安装xorg)。

方式二:VNC+SSH隧道(完整桌面)

如果需要完整的桌面环境,建议用VNC:

  1. 在test-PC上安装VNC服务器:
    sudo apt-get update
    sudo apt-get install tightvncserver
    
  2. 启动VNC服务器,设置密码:
    tightvncserver :1
    
    这里的:1对应端口5901。
  3. 在main-PC上建立SSH隧道:
    ssh -L 5901:localhost:5901 ikayyy@172.16.61.16
    
  4. 在main-PC上打开VNC Viewer,连接localhost:5901,输入你设置的密码就能看到test-PC的完整桌面了。

内容的提问来源于stack exchange,提问作者Imrank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:07:08