树莓派4B Ubuntu Buster环境下TightVNC Server与SSH隧道配置故障及疑问求助
树莓派4B Ubuntu Buster环境下TightVNC Server与SSH隧道配置故障及疑问求助
你好,针对你遇到的这一系列问题,我来一步步帮你分析和解决:
关于5901端口被占用的问题
你碰到的bind [127.0.0.1]:5901: Address already in use错误,是因为5901端口已经被其他进程占用了——大概率是之前启动的TightVNC实例没正常退出,或是有其他服务误占用了这个端口。你用lsof -ti:5901查到的5161和5535,就是占用该端口的进程ID。
不过你直接kill进程后出现SSH连接拒绝,大概率是不小心误杀了和SSH服务相关的进程,或是kill操作导致系统服务异常了。
解决SSH连接拒绝的问题
首先明确一点:树莓派的SSH服务必须处于运行状态,才能通过SSH远程连接它,不管是建立VNC隧道还是直接远程管理。现在连接被拒绝,你可以按以下方式排查:
- 如果能给树莓派接上显示器和键鼠,先本地检查SSH服务状态:
运行命令:sudo systemctl status sshd,看看服务是不是已经停止了。如果显示inactive,就启动它:sudo systemctl start sshd,顺便设置开机自启避免下次出问题:sudo systemctl enable sshd - 如果没法接显示器,那只能物理重启树莓派,重启后SSH服务会自动恢复(默认Ubuntu Buster是开启SSH自启的,除非你之前改过),之后再重新配置VNC。
重新配置VNC与SSH隧道的正确步骤
等SSH恢复正常后,咱们重新梳理VNC和隧道的配置:
- 先清理残留的VNC会话:运行
vncserver -list查看当前运行的VNC会话,如果有1号会话(对应5901端口),就用vncserver -kill :1关闭它 - 启动一个干净的VNC会话:
vncserver :1 -geometry 1920x1080(分辨率可以根据你的需求调整) - 建立SSH隧道时,如果本地电脑的5901端口也被占用(比如本地装了VNC客户端),可以换一个本地端口避免冲突,比如:
ssh -L 5902:127.0.0.1:5901 pi@192.168.0.149
之后你在本地VNC客户端输入127.0.0.1:5902就能连接树莓派的桌面了
解答你的疑问
是的,要通过SSH建立VNC隧道,树莓派的SSH服务必须处于运行状态。因为SSH隧道是依托SSH连接创建的,没有正常运行的SSH服务,你连SSH连接都建立不了,更别说搭建隧道了。而且如果后续SSH连接断开,隧道也会失效,需要重新通过SSH连接来重建。
备注:内容来源于stack exchange,提问作者pi4desktop
相关产品推荐
相关产品推荐

