买了台便宜VP,S,1核1G内存,准备搭个博客和网盘玩玩。结果第一步SSH连接就卡住了,折腾了一整天。
把踩过的坑记录下来,你们少走点弯路。
第一个坑:系统缺文件,SSH起不来
收到开通邮件,拿到IP和密码,打开FinalShell准备连接。
结果直接报错:Remote side unexpectedly closed network connection
试了好几次,连接一直断。我还以为是服务器没启动,等了半小时再试,还是不行。
怎么排查:
远程连不上,只能用V,PS后台的VNC控制台进去看(就是网页版的远程桌面)。
进去后输入sshd -t 检查SSH配置,结果报错了:
Missing privilege separation directory: /run/sshd
查了一圈才知道,Ubuntu 24.04的某些镜像有个bug。SSH服务启动时需要一个临时目录 /run/sshd,但系统初始化时漏了这一步。目录不存在,服务直接崩溃。
解决办法:
在VNC里输入这几行命令:
mkdir -p /run/sshd
chmod 755 /run/sshd
service ssh restart
重启SSH服务后,问题就解决了。
第二个坑:改了端口,忘了开防火墙
SSH能连上了,但我不想用默认的22端口,太容易被扫描。
改成2222端口:
1.编辑/etc/ssh/sshd_config
2.把Port 22 改成Port 2222
3.重启服务器
结果又连不上了,这次报错是:Connection refused
问题出在哪:
我改了SSH监听的端口,但防火墙还是只放行22端口。
SSH服务在2222等着,防火墙的门却只对22开着。你访问2222,直接被挡在外面。
这是新手最容易忽略的地方。我当时还以为是端口配置写错了,来回检查了好几遍。
解决办法:
再进VNC(因为SSH还是连不上),告诉防火墙放行新端口:
ufw allow 2222/tcp
如果你不确定是不是防火墙的问题,可以先临时关掉:
ufw disable
关掉后能连上,那就说明确实是防火墙的问题。
第三个坑:本地网络工具捣鬼
防火墙搞定了,端口也没问题,FinalShell还是报错:java.net.ConnectException: Connection refused
这次真绷不住了,服务器端已经没问题了,怎么还连不上?
问题在哪:
最后发现,问题出在我自己电脑上。
我平时用Cl/ash来管理网络连接(你懂的),开着TU、N模式。这个模式会接管所有网络流量,包括SSH。
如果Clabsh的规则没配好,SSH连接请求根本发不出去,直接在本地就被拒绝了。
解决办法:
关掉Clabsh的TUvN模式。
关掉的瞬间,FinalShell秒连成功。
当时真的有点懵,因为平时都开着这个,从来没想过会影响SSH连接。后来才明白,TUbN模式会把所有流量都走DL,SSH自然也被拦了。
现在的配置
折腾完这三个问题,现在服务器很稳定:
1.SSH端口改成2222,防扫描
2.防火墙开着,只放行2222、80、443等必要端口
3.本地连接工具关掉网络代、li,直连服务器
最后的防火墙配置:
连上服务器后,运行这几行命令锁定端口:
# 删掉默认的22端口规则
ufw delete allow 22/tcp
# 放行新端口
ufw allow 2222/tcp
# 启用防火墙
echo “y” | ufw enable
总结几个教训
1. Ubuntu 24.04的系统镜像有坑 如果SSH连不上,先进VNC检查一下 /run/sshd 目录存不存在。
2. 改端口一定要同步改防火墙 不然你在这头喊,防火墙在那头堵着,白费劲。
3. 本地网络工具可能会干扰SSH 如果服务器端确认没问题,试试关掉本地的网络代。理工具。
4. VNC是救命稻草 SSH连不上的时候,VNC能让你进去修配置。买V,PS之前确认服务商提供VNC控制台。
这三个问题我折腾了一整天,每个坑都踩了。写出来给你们参考,少走弯路。
如果你也在折腾VPS,遇到类似问题,试试上面的方法。