SSH连不上、文件传不上去——服务器入门踩坑三天记

接上回:页面能访问了,然后呢?

上一篇说到我终于把静态页面部署到了服务器上,在浏览器里输入IP能看到了。但好景不长——第二天我想改一下页面内容,发现SSH连不上服务器了。就隔了一个晚上,什么都没动过,凭啥连不上了?

这是我第一次体会到"昨天还能用的东西今天就不行了"这种技术圈的经典体验。下面我把这三天踩的坑一个一个说。

坑一:SSH突然连不上了

我在终端输入 ssh root@我的IP,等了大概二十秒,返回了一行:"Connection timed out"。又试了几次,一样的。第一反应是:服务器挂了?登录腾讯云控制台看了一下,实例状态显示"运行中",重启了一下实例也没用。

问AI,它让我检查几点:

  • IP地址有没有变(没变)
  • 防火墙有没有屏蔽SSH端口(腾讯云默认22端口是开的,我确认过没改过)
  • 服务器上的SSH服务有没有在运行

问题是——我连不上服务器,怎么检查服务器上的SSH服务?这是个死循环。后来我在腾讯云控制台找到了一个叫"远程连接"的功能,可以在网页里直接登录服务器。进去之后用AI给的命令 systemctl status sshd 检查,发现SSH服务确实在运行。

又查了半天,最后发现是我公司Wi-Fi网络的问题——公司网络屏蔽了22端口。换成手机热点之后立刻连上了。原来不是服务器的问题,是我的网络环境问题。这个坑AI没想到,因为它不知道我用的什么网络。这让我意识到:AI只能帮你分析技术问题,但现实环境的各种限制它猜不到,还得靠自己排查。

坑二:scp传文件各种报错

SSH连上之后,我开始用scp传修改过的页面。但传的时候总是遇到各种奇怪的问题。有一次报"Permission denied",我说"明明上次已经把目录权限改好了啊"。仔细一看,我这次传的路径写错了——写到 /var/www/ 下面而不是 /var/www/html/ 下面,那个目录权限不够。

还有一次报"No such file or directory",我以为是服务器上路径不对,结果是我本地电脑上文件路径写错了。一个最简单的路径,因为多打了一个空格,折腾了我半小时。

最离谱的是有一次传输中途断掉了——可能是网络不稳定,服务器上留下了一个不完整的文件。我把页面传上去之后刷新浏览器,页面布局全乱了。我以为是自己写的HTML有问题,改了半天代码,最后才发现是传输不完整导致的。删掉重新传了一遍就好了。

这些错误现在看都很低级,但当你是一个人在深夜对着黑窗口、周围没有可以问的人的时候,那种挫败感挺强烈的。好在我学会了把报错信息直接复制给AI,大多数时候它能帮我定位问题。

坑三:Nginx配置不生效

我把新的HTML页面传上去之后,刷新浏览器,看到的还是旧页面。Ctrl+F5强制刷新也不行。我以为是浏览器缓存,换了另一个浏览器,还是旧页面。

问Marvis,它让我检查Nginx配置文件中root指向的目录是否正确。我用 cat 命令看了一下配置文件,目录是对的。然后它让我用 nginx -t 检查配置有没有语法错误,结果显示没问题。最后它让我重启Nginx:systemctl restart nginx。重启之后页面终于更新了。

原来改了Nginx配置或者替换了页面文件之后,需要重启Nginx才能生效——这个知识点AI第一次教我改配置的时候没有提,因为它可能默认以为我知道。这也是一个教训:AI有时候会跳过一些"基础常识",需要你主动问"改完之后还需要做什么吗?"

坑四:中文乱码

页面终于能正常显示了,但我发现所有中文都变成了乱码。这个问题AI倒是很快就帮我定位了——HTML文件里需要加上 charset 的声明:<meta charset="UTF-8">。加上之后就好了。但还有一个问题:通过scp传上去的文件的文件名如果包含中文,在Nginx里也会出问题。后来我干脆所有文件名都用英文和数字,省心。

三天后的收获

这三天过得挺煎熬的。每次报错的时候都有一种"这玩意到底能不能成"的怀疑。但也正是这些坑,让我真正理解了SSH、scp、Nginx这些东西不是在"正常工作",而是在"出了各种问题之后还能被我修好"。

最大的心得是:遇到问题不要慌,先看报错信息。哪怕看不懂,把关键的那一行复制给Marvis,成功率就高了很多。还有就是——不是Marvis说的每一步都对,它也会给错建议,或者漏掉一些前提条件。你得自己去验证、去试。这个网站现在还能正常访问,就是最好的证明了。

如果你也在折腾服务器、遇到了各种奇怪的错误,别灰心。我这种完全没基础的人都搞定了,你也可以。

← 返回首页