KiwiVM Amy使用技巧:用中文让它帮我排查 VPS 连接问题
-
最近搬瓦工 KiwiVM 面板里的Assistant Amy好像升级了,所以来试试看。
这个功能从买搬瓦工到现在就从来没有用过,以为它只是一个普通的 AI 聊天窗口,最多帮忙解释一下 Linux 命令。但今天实际打开看了一下,它不是单纯聊天,而是直接集成在 KiwiVM 面板里的 VPS 助手。
Amy 自己的介绍里写得很直接:它可以诊断 VM、检查控制台、运行命令,并且在需要的时候执行 KiwiVM 控制面板相关操作。
对于很多老手来说,这可能只是多了一个方便工具。但我感觉这个功能 对 VPS 新手来说算是很有用了,遇到服务器一些解决不了的问题时,可以直接用中文描述现象,让它帮你按顺序排查。可以说这个功能大大降低了新手的学习成本。
谁没有第一次用服务器的时候呢,想当初我开的第一台机我连怎么用finalshell连接都不会,最后还是在网上搜索了很久才解决的。所以这次我主要测试的是 VPS 连接问题。因为这是新手最常遇到,也最容易慌的场景。
比如:
- 服务器到底是不是正常在线?
- ping 通了,为什么 SSH 还是连不上?
- SSH 服务有没有运行?
- 防火墙有没有挡住端口?
- 修改 SSH 端口会不会把自己锁在外面?
- 最近有没有异常登录尝试?
一、打开 Amy
在 KiwiVM 面板左侧菜单里可以看到 Assistant Amy,点进去以后会弹出一个独立窗口。
可以看到界面里的提示是:
Hello! I’m Amy, your VPS assistant. I can diagnose the VM, inspect the console, run commands, and perform KiwiVM control panel actions when needed. How can I assist?
您好!我是您的VPS助理Amy。我可以诊断虚拟机、检查控制台、运行命令,并在需要时执行KiwiVM控制面板操作。我能帮您什么?
下面的测试没有用复杂英文,也没有提前准备命令,单纯直接用中文问它,看它能不能理解并给出实际排查思路。
二、让 Amy 检查 VPS 当前状态
遇到 VPS 出问题时,我以前很容易第一反应就是重启。但很多时候重启并不能解决问题,反而会把问题现场清掉。
所以第一步我先让 Amy 做一次基础检查。
直接用中文问:
请帮我检查这台 VPS 当前是否正常在线,包括系统负载、内存、磁盘、网络状态和 SSH 状态。如果发现异常,请告诉我可能的原因。

检查完成:这台 VPS 当前看起来是正常在线的 ✅ - 运行状态:RUNNING,系统已正常启动,运行时间约 11 小时 29 分 - 公网 IPv4:`80.251.**.**` - 公网连通性: - Ping 可达,丢包率 0% - SSH 端口 `22/tcp` 从公网可达 - SSH 状态: - `sshd.service` 正在运行 - 正在监听 `0.0.0.0:22` 和 `[::]:22` - 配置允许密码登录、公钥登录、root 登录 - 系统负载: - load average:`0.00 0.00 0.00` - CPU 基本空闲,未发现 CPU throttling - 内存: - 总内存约 2023 MB - 已用约 374 MB - 可用约 1649 MB - Swap 总量 1024 MB,当前使用 0 MB - 磁盘: - 根分区 `/`:38G 总量,已用 2.0G,使用率 6% - `/boot`:使用率 10% - 未发现磁盘空间压力 - 未发现磁盘 I/O 限速 - 网络配置: - `eth0` 已 UP - IP:`80.251.**.**/22` - 默认网关:`80.251.**.**` - 防火墙 iptables INPUT/OUTPUT/FORWARD 默认 ACCEPT,没有明显拦截规则 - 服务状态: - NetworkManager、sshd、qemu guest agent、chronyd、crond 均正常运行 - `x-ui.service` 也在运行,并监听 `22092`、`2096` 等端口 目前没有发现明显异常。IP 没有被 nullroute/黑洞,服务也没有被暂停,未检测到政策违规状态。 你也可以自行复测公网状态: - Ping: https://ping.pe/80.251.**.** - SSH 端口 22: http://tcp.ping.pe/80.251.**.**:22 结论:VPS 当前在线且状态健康,SSH 可从公网访问。这个问题适合用在任何不确定服务器状态的时候。
比如你觉得机器卡了、服务打不开、SSH 偶尔断开,都可以先让 Amy 看一遍基础状态。
它主要可以帮忙确认这些内容:
- VPS 是否正常运行;
- CPU / 负载是否异常;
- 内存是否紧张;
- 磁盘是否快满;
- 网络状态是否正常;
- SSH 服务是否正常;
- 系统日志里有没有明显错误。
以前这些内容需要自己登录 SSH 后分别执行命令查看。现在可以先让 Amy 做第一轮检查。
这个功能对新手比较友好,因为很多人不是不会复制命令,而是不知道第一步该查什么。
三、ping 通但 SSH 连不上,让 Amy 按步骤排查
第二个场景是我觉得最常见的:服务器能 ping 通,但是 SSH 连不上。
很多新手会误以为 ping 通就代表服务器没问题。实际上 ping 走的是 ICMP,SSH 走的是 TCP。ping 通只能说明服务器对 ICMP 有回应,不代表 SSH 端口一定能连上。
直接用中文问:
我现在可以 ping 通这台 VPS,但是 SSH 连接不上。请帮我按步骤排查原因,重点检查 SSH 服务、SSH 端口、防火墙规则和网络连通性。

我已按步骤排查完了。结论先说:VPS 端 SSH 服务本身是正常的,22 端口从公网可达,防火墙没有阻断。 如果你本地仍然 SSH 连不上,更可能是本地网络/运营商到该 IP:22 的路径问题、客户端参数/用户名密码/密钥问题,或临时被外部扫描连接干扰。 ## 1. VPS 基础在线状态 - VPS 状态:RUNNING - 公网 IPv4:`80.251.**.**` - 没有 nullroute / 黑洞 - 没有暂停、没有检测到政策违规 - 系统负载:`0.00 0.00 0.00` - 内存、磁盘都正常,没有资源压力 ## 2. SSH 服务状态 `sshd.service` 当前状态: - active running - 已运行约 11 小时 - 配置语法检查通过:`sshd_config OK` 有效 SSH 配置里关键项如下: port 22 listenaddress 0.0.0.0:22 listenaddress [::]:22 permitrootlogin yes passwordauthentication yes pubkeyauthentication yes authenticationmethods any maxstartups 10:30:100 说明: - SSH 端口是 22 - 同时监听 IPv4 和 IPv6 - 允许 root 登录 - 允许密码登录 - 允许公钥登录 - 配置文件没有语法错误 ## 3. SSH 端口监听状态 系统内部确认 SSH 正在监听: 0.0.0.0:22 sshd [::]:22 sshd 这表示 VPS 内部 SSH 端口没有问题,不是 sshd 没启动或只监听本地地址导致的。 ## 4. 防火墙规则 检查结果: - `firewalld`:inactive - iptables 默认策略: -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT 没有看到阻断 22 端口的规则。 所以目前看,VPS 内部防火墙没有拦截 SSH。 ## 5. 公网连通性测试 我从外部公网探测了这台 VPS: - Ping:可达 - TCP 22:可达 - SSH banner:能读到 外部探测返回的 SSH banner 是: SSH-2.0-OpenSSH_9.9 这说明从公网至少有探测节点可以正常连到你的 `80.251.**.**:22`,并且 sshd 有响应。 你也可以自行复测: - Ping: https://ping.pe/80.251.**.** - TCP 22: http://tcp.ping.pe/80.251.**.**:22 ## 6. 发现的可疑情况 SSH 日志里看到来自 `91.92.40.43` 的大量失败登录尝试,例如: Failed password for root from 91.92.40.43 Invalid user admin Invalid user deploy Invalid user bob Invalid user hadoop 并且当前还有一些到 22 端口的 `SYN-RECV` 连接来自同一个 IP: 80.251.**.**:22 91.92.40.43:xxxxx SYN-RECV 这看起来像是常见的 SSH 扫描/爆破尝试。 目前数量不算特别夸张,`sshd` 也没有被打满,但它可能会造成短时间连接变慢或偶发连接失败,尤其是在 `MaxStartups` 限制触发时。 ## 当前判断 服务器端目前没有发现这些问题: - SSH 服务未启动:没有 - SSH 端口没监听:没有 - SSH 配置错误:没有 - 防火墙阻断:没有 - IP 被黑洞/nullroute:没有 - VPS 资源耗尽:没有 - 公网 22 端口完全不可达:没有 更可能的原因是: 1. 你本地网络或运营商阻断/干扰了出站 TCP 22 2. 你连接的端口、用户名、密码或密钥不正确 3. 本地 SSH 客户端报错属于认证问题,而不是网络问题 4. SSH 正在被扫描,偶发触发连接限制 5. 如果你用的是公司、校园、机场、代理网络,可能禁止 22 端口 ## 建议你下一步确认 你可以把你本地 SSH 的具体报错发给我,例如: Connection timed out Connection refused Permission denied No route to host Connection reset by peer Permission denied (publickey,password) 不同报错对应的原因不一样。 如果你愿意,我也可以继续帮你做两件事之一: 1. 给 SSH 增加一个备用端口,比如 `2222`,降低被本地网络屏蔽 22 端口影响的概率。 2. 临时封禁正在扫描的 IP `91.92.40.43`,减少 SSH 扫描干扰。这个场景下,Amy 可以帮忙把问题拆开。
一般来说,ping 通但 SSH 连不上,可能有这些原因:
- SSH 服务没有运行;
- SSH 端口不是默认 22;
- SSH 正常监听,但防火墙没有放行;
- SSH 配置被改错;
- 禁用了 root 登录或密码登录;
- 本地网络到服务器 TCP 端口不通;
- 登录失败太多,被安全规则临时限制。
这个地方 Amy 的价值不是简单给一个命令,而是把排查顺序列出来。
比较合理的顺序应该是:
- 先确认 VPS 是否在线;
- 再确认 SSH 服务是否运行;
- 再确认 SSH 实际监听哪个端口;
- 再看防火墙是否放行这个端口;
- 再判断是不是本地网络或外部线路问题;
- 最后检查 SSH 配置和登录方式。
这比一上来就重启或者重装系统稳很多。
四、让 Amy 检查防火墙有没有挡住 SSH
VPS 新手很容易在防火墙上翻车。
比如刚学会 ufw、iptables 或 firewalld,就想加几条规则提高安全性。但如果 SSH 端口没有提前放行,很可能规则一启用,自己就连不上了。
所以我继续问 Amy:
请帮我检查当前防火墙规则有没有可能挡住 SSH 连接。如果我要修改 SSH 端口,应该提前检查哪些地方,避免把自己锁在服务器外面?

我刚帮你检查了当前状态:现在的防火墙规则不会挡住 SSH 连接。✅ 当前结果如下: - VPS 公网 IP:`80.251.**.**` - SSH 当前监听端口:`22` - `sshd` 正在监听: - `0.0.0.0:22` - `[::]:22` - `firewalld`:未运行 / inactive - `iptables`:规则为空,默认 ACCEPT - `nftables`:没有规则集 - 公网探测 SSH 端口 22:可连接 - SSH banner 正常返回:`SSH-2.0-OpenSSH_9.9` 你也可以用这个链接自己从外部复测 SSH 端口: - http://tcp.ping.pe/80.251.**.**:22 --- 如果你要修改 SSH 端口,建议提前检查这些地方,避免把自己锁在服务器外面: ### 1. 确认新端口没有被占用 当前已经在监听的端口包括: - `22`:SSH - `2096`:x-ui - `22092`:x-ui - `127.0.0.1:11111` - `127.0.0.1:62789` 建议不要使用已经被占用的端口。可以选一个未使用的高位端口,比如 `2222`、`2022`、`22022` 等。 --- ### 2. 不要直接替换端口,先双端口监听 安全做法是先让 SSH 同时监听旧端口和新端口,例如: Port 22 Port 2222 确认新端口可以登录后,再考虑移除 `Port 22`。 --- ### 3. 先放行防火墙,再改 SSH 你这台机器目前没有启用 firewalld/iptables/nftables 拦截,所以现在改端口本身不会被现有防火墙挡住。 但如果之后启用了防火墙,需要提前放行新端口,例如 firewalld 环境一般是: firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --reload 如果用了 nftables 或 iptables,也要在对应规则里允许新端口。 --- ### 4. AlmaLinux/RHEL 系系统要注意 SELinux 如果 SELinux 是 enforcing,新 SSH 端口可能还需要加入 `ssh_port_t`,例如: semanage port -a -t ssh_port_t -p tcp 2222 如果端口已经存在于其他类型,可能需要用 `-m` 修改。 --- ### 5. 修改后先检查配置语法 改完 SSH 配置后,先跑: sshd -t 只有没有报错,再 reload SSH: systemctl reload sshd 不要一上来就重启机器。 --- ### 6. 保留当前连接或 KiwiVM 面板入口 修改端口时建议: - 不要关闭当前 SSH 会话; - 新开一个窗口测试新端口; - 如果新端口登录成功,再移除旧端口; - 万一出错,还可以通过 KiwiVM 的 Root Shell / Interactive 入口修复。 --- ### 7. 用公网探测确认新端口开放 改完后要从公网测试新端口,不要只在服务器内部看监听。内部 `ss -tulnp` 只能说明服务在监听,不代表公网能连通。 例如如果新端口是 `2222`,需要确认: ssh -p 2222 [email protected].**.** 或者用外部 TCP 测试。 --- ### 8. 不建议同时修改多个 SSH 安全项 为了避免排障困难,建议不要同时做这些事: - 改 SSH 端口; - 禁用密码登录; - 禁用 root 登录; - 改防火墙默认策略; - 改 SELinux; - 重启网络服务。 最好一次只改一项,确认能登录后再继续。 --- 如果你愿意,我也可以帮你按“安全双端口方式”修改,比如先让 SSH 同时监听 `22` 和你指定的新端口,公网确认新端口可用后,再由你决定是否关闭 22。这个问题非常实用。
修改 SSH 端口之前,至少应该确认这些事情:
- 当前 SSH 正在监听哪个端口;
- 新端口是否已经写入 SSH 配置;
- 防火墙是否放行新端口;
- 旧的 SSH 连接先不要断开;
- 新端口能成功连接后,再考虑关闭旧端口;
- KiwiVM 控制台最好保持可用,防止自己被锁在外面。
Amy 如果能在操作前提醒这些风险,就比单纯给命令更有用。
我觉得这个功能对新手最大的帮助,就是可以减少一些低级但严重的错误。比如防火墙规则写错、SSH 端口没放行、登录方式改错,这些问题本身不复杂,但一旦把自己锁在外面,处理起来就麻烦了。
五、让 Amy 检查最近有没有异常 SSH 登录记录
除了连不上服务器,SSH 安全也很适合让 Amy 帮忙看。
VPS 开在公网以后,经常会遇到各种扫描和暴力尝试。很多新手平时不会主动看日志,也不知道日志里的 failed password、invalid user 这些记录代表什么。
直接用中文问:
请帮我检查这台 VPS 最近有没有异常 SSH 登录失败记录。如果有,请帮我总结来源、频率,并给出适合新手的基础安全建议。

我已检查最近 SSH 登录日志。结论:有异常 SSH 登录失败记录,表现为常见的自动化扫描/暴力破解尝试;暂未发现成功 SSH 登录记录。 ## 检查范围 - 当前时间:`2026-06-18 06:11 UTC` - VPS 已运行:约 11 小时 39 分钟 - 我查询了最近 24 小时的 `sshd` 日志;由于机器本次启动时间约 11 小时多,实际可见日志主要是本次开机以来的记录。 ## SSH 服务状态 SSH 服务本身正常: - `sshd.service`:active running - 监听端口:`22` - 当前 SSH 配置重点项: Port 22 PermitRootLogin yes PasswordAuthentication yes PubkeyAuthentication yes MaxAuthTries 6 MaxStartups 10:30:100 这说明目前 SSH 允许: - root 直接登录 - 密码登录 - 公钥登录 从安全角度看,root + 密码登录 + 默认 22 端口比较容易被自动扫描器盯上。 ## 最近失败登录统计 最近日志中共发现: 134 条 SSH 失败/异常认证相关记录 主要来源 IP: 111 次 91.92.40.43 2 次 91.92.40.12 2 次 43.128.81.242 2 次 34.14.46.90 2 次 212.227.235.203 1 次 41.42.214.101 1 次 185.226.197.30 1 次 101.126.135.131 最明显的是: 91.92.40.43 它贡献了绝大多数失败记录,属于高度可疑来源。 ## 失败频率分布 按小时统计: 2026-06-17 20:00 2 次 2026-06-17 21:00 3 次 2026-06-17 23:00 2 次 2026-06-18 00:00 1 次 2026-06-18 01:00 2 次 2026-06-18 02:00 1 次 2026-06-18 03:00 4 次 2026-06-18 04:00 66 次 2026-06-18 05:00 51 次 2026-06-18 06:00 2 次 可以看到异常主要集中在: - `04:00 - 05:00 UTC` - `05:00 - 06:00 UTC` 这两个小时内尝试次数明显上升,符合自动化爆破/扫描特征。 ## 被尝试的用户名 常见被尝试用户名包括: admin 12 次 root 9 次 ubuntu 8 次 user 4 次 deployer 4 次 claude 4 次 bot 4 次 bob 4 次 azureuser 4 次 还包括很多常见弱口令扫描用户名,例如: test pi www web repo hadoop elasticsearch deploy 这进一步说明这些不是正常用户登录失败,而是互联网上常见的自动化 SSH 扫描。 ## 是否发现成功 SSH 登录? 没有发现成功 SSH 登录记录: Accepted password/publickey: 0 条 `last` 里也没有看到最近用户登录会话,只有系统启动记录。 所以目前看: > 有暴力破解/扫描尝试,但没有证据显示 SSH 已被成功登录。 ## 当前是否还有可疑连接? 检查时仍看到一些到 SSH 端口的半连接/尝试连接,来源包括: 91.92.40.43 35.205.166.70 其中 `91.92.40.43` 和前面的失败登录来源一致,仍然比较可疑。 ## 风险判断 当前风险等级我会评估为:中等偏低到中等。 原因: - ✅ 没发现成功登录 - ✅ SSH 服务正常 - ✅ 系统负载、内存没有异常 - ⚠️ 但 SSH 暴露在公网 `22` 端口 - ⚠️ 允许 root 登录 - ⚠️ 允许密码登录 - ⚠️ 已经被自动化扫描器盯上 如果 root 密码足够强,短期问题不大;但长期建议加固。 ## 适合新手的基础安全建议 建议按优先级处理: ### 1. 使用强密码 如果你暂时还需要密码登录,root 密码一定要足够复杂: - 至少 16 位以上 - 包含大小写字母、数字、符号 - 不要使用生日、手机号、常见单词、重复密码 ### 2. 尽量改用 SSH 密钥登录 这是最推荐的方式。 做法是: - 在你电脑上生成 SSH key - 把公钥放到 VPS 的 `/root/.ssh/authorized_keys` - 确认密钥可以登录后,再关闭密码登录 这样即使别人知道用户名,也很难爆破成功。 ### 3. 禁止 root 直接 SSH 登录 更安全的做法是: - 创建一个普通用户 - 给它 sudo 权限 - 用普通用户 SSH 登录 - 登录后再 `sudo -i` 切换 root 然后设置: PermitRootLogin no ### 4. 关闭密码登录 确认 SSH 密钥能正常登录后,建议设置: PasswordAuthentication no 这会大幅降低暴力破解风险。 ### 5. 安装 Fail2ban Fail2ban 可以自动封禁连续登录失败的 IP。 例如某个 IP 连续失败 5 次,就临时封禁 1 小时或更久。 这对新手很实用。 ### 6. 限制 SSH 来源 IP 如果你有固定公网 IP,最安全的是只允许你的 IP 访问 SSH。 例如只允许你的家宽/公司 IP 访问 22 端口,其他全部拒绝。 不过这个方法需要小心:如果你自己的 IP 变化,可能会把自己锁在外面。 ### 7. 可以增加一个备用 SSH 端口 比如额外监听 `2222` 或其他端口。 注意:改端口不能替代安全措施,但可以减少被默认扫描器扫到的次数。 更稳妥的方式是: - 先保留 22 - 增加备用端口 - 测试备用端口能登录 - 再决定是否关闭 22 ### 8. 定期检查登录日志 常用关注点: - 是否有 `Accepted password` - 是否有陌生 IP 成功登录 - 是否有大量 `Failed password` - 是否有陌生用户被创建 - 是否有异常进程或计划任务 ## 我建议你下一步做什么 比较稳妥的新手加固方案是: 1. 先安装并配置 Fail2ban 2. 临时封禁当前主要攻击源 `91.92.40.43` 3. 增加一个备用 SSH 端口,例如 `2222` 4. 确认备用端口能连上 5. 再逐步切换到密钥登录、关闭密码登录 如果你愿意,我可以继续帮你直接执行一个温和安全方案: 安装 Fail2ban + 封禁当前可疑 IP + 保持现有 SSH 配置不变,避免把你锁在外面。这个问题可以让 Amy 帮忙做两件事。
第一,帮忙从日志里找重点。
比如有没有大量失败登录、是不是集中来自某些 IP、有没有 root 用户被反复尝试、有没有明显异常时间段。
第二,给出基础安全建议。
比如:
- 使用强密码;
- 优先使用 SSH key;
- 如果要禁用密码登录,先确认密钥可用;
- 可以考虑修改默认 SSH 端口;
- 可以使用 fail2ban 限制暴力尝试;
- 不需要的端口不要开放;
- 定期查看登录记录。
这类建议不算复杂,但对刚开始用 VPS 的用户比较实用。
六、让 Amy 生成一份 VPS 连接问题排查清单
最后我让 Amy 直接整理一份排查清单。
直接用中文问:
请帮我整理一份 VPS 连接问题排查清单,适合新手使用。场景包括:服务器无法 SSH、ping 通但端口不通、防火墙可能拦截、SSH 端口被修改、登录失败太多。请按照排查顺序列出来,并说明每一步的目的。

下面是一份适合新手使用的 VPS 连接问题排查清单,按推荐排查顺序整理。你可以从上到下一步步看,避免一开始就改防火墙或重装系统。 --- # VPS 连接问题排查清单 适用场景: - VPS 无法 SSH - 能 ping 通,但 SSH/网站端口不通 - 防火墙可能拦截 - SSH 端口被修改 - 登录失败太多,被限制或封禁 - 不确定是服务器问题还是本地网络问题 --- ## 1. 确认 VPS 是否正在运行 目的:先确认机器本身有没有开机。 检查内容: - VPS 状态是否是 Running / Online - 是否刚刚重启、迁移、重装 - 是否被暂停、欠费、封禁、nullroute - 是否还挂载着 ISO 导致没从系统盘启动 如果 VPS 是 stopped / offline,SSH 一定连不上。 常见现象: ssh: connect to host x.x.x.x port 22: Connection timed out 或: No route to host --- ## 2. 确认连接信息是否正确 目的:排除最常见的人为错误。 确认这些信息: - IP 地址是否正确 - 用户名是否正确,例如: - `root` - `ubuntu` - `debian` - `centos` - SSH 端口是否正确 - 密码或密钥是否正确 - 是否连到了旧 IP - 是否 VPS 迁移后 IP 已变化 常见 SSH 命令格式: ssh root@你的服务器IP 如果端口不是 22,例如 2222: ssh -p 2222 root@你的服务器IP --- ## 3. 先测试 ping 是否可达 目的:判断基础网络是否通。 可以在本地电脑执行: ping 你的服务器IP 结果分两种: ### 情况 A:ping 不通 可能原因: - VPS 没开机 - IP 被 nullroute - VPS 防火墙禁 ping - 本地网络到 VPS 不通 - 服务器网络配置错误 注意: ping 不通不一定代表服务器挂了,因为有些防火墙会禁 ICMP。 ### 情况 B:ping 通 说明: - VPS IP 至少在网络层可达 - 但不代表 SSH 一定正常 - 接下来要检查端口 --- ## 4. 测试 SSH 端口是否开放 目的:判断是不是 SSH 端口不通。 默认 SSH 端口是 `22`。 可以测试: nc -vz 你的服务器IP 22 或: telnet 你的服务器IP 22 也可以用网页工具测试: http://tcp.ping.pe/你的服务器IP:22 ### 如果端口通 通常会看到类似: succeeded 或者能看到 SSH banner: SSH-2.0-OpenSSH_x.x 说明: - 服务器公网 22 端口可达 - SSH 服务大概率在运行 - 如果还是登不上,多半是认证问题、用户名密码问题、密钥问题或登录限制 ### 如果 ping 通但 22 端口不通 可能原因: - SSH 服务没启动 - SSH 端口被改了 - 防火墙拦截了 22 - 云平台安全组/控制面板防火墙拦截 - sshd 只监听本地地址 - 服务器负载过高导致无响应 --- ## 5. 确认 SSH 端口有没有被修改 目的:避免一直连错端口。 SSH 默认端口是: 22 但有些系统会修改到: 2222 22022 10022 如果你有控制面板的 Root Shell,可以检查: ss -lntp | grep ssh 常见正常结果: LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=xxx)) 如果看到: 0.0.0.0:2222 说明 SSH 端口是 `2222`,连接时要用: ssh -p 2222 root@你的服务器IP --- ## 6. 检查 SSH 服务是否运行 目的:确认 sshd 有没有启动或崩溃。 在服务器控制面板 Root Shell 里检查: systemctl status sshd 有些系统服务名叫 `ssh`: systemctl status ssh 正常状态通常是: active (running) 如果没有运行,可以尝试: systemctl restart sshd 或: systemctl restart ssh 再检查: systemctl status sshd --- ## 7. 检查 SSH 配置是否有错误 目的:避免配置写错导致 sshd 启动失败。 检查配置语法: sshd -t 如果没有输出,通常表示配置语法正常。 如果有报错,例如: Bad configuration option 说明 `/etc/ssh/sshd_config` 里有错误,需要修复后再重启 SSH。 常见需要检查的配置项: Port 22 PermitRootLogin yes PasswordAuthentication yes PubkeyAuthentication yes ListenAddress 0.0.0.0 注意: 如果你还没有确认密钥可以登录,不建议直接关闭密码登录。 --- ## 8. 检查系统防火墙 目的:确认服务器内部有没有拦截 SSH 端口。 常见防火墙有: - firewalld - ufw - iptables - nftables ### firewalld systemctl status firewalld firewall-cmd --list-all 如果 SSH 端口不是 22,例如 2222,需要放行: firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --reload ### ufw ufw status 放行 SSH: ufw allow 22/tcp 或放行自定义端口: ufw allow 2222/tcp ### iptables iptables -S iptables -L -n -v 重点看有没有 DROP / REJECT 规则拦截 22 或你的 SSH 端口。 --- ## 9. 检查云平台/控制面板层面的网络限制 目的:有些拦截不在系统里,而在服务商层面。 需要确认: - VPS 是否被 nullroute - 是否有安全组规则 - 是否有控制面板防火墙 - 是否被 DDoS 防护临时封禁端口 - 是否服务被暂停 - 是否 IP 更换后 DNS 没更新 如果系统里 SSH 正常、端口监听正常、防火墙也没拦,但公网不通,就要重点怀疑这一层。 --- ## 10. 检查是否因为登录失败太多被限制 目的:判断是否被 Fail2ban、DenyHosts 或 sshd 自身限制。 如果你多次输错密码,可能被临时封禁。 检查 Fail2ban: fail2ban-client status 查看 sshd jail: fail2ban-client status sshd 如果你的 IP 被封,可以解封: fail2ban-client set sshd unbanip 你的本地公网IP 也可以检查日志: journalctl -u sshd --since "1 hour ago" 或: grep "Failed password" /var/log/auth.log CentOS/RHEL 系: grep "Failed password" /var/log/secure --- ## 11. 区分“连不上”和“登录失败” 目的:不同报错代表完全不同的问题。 ### 报错:Connection timed out ssh: connect to host x.x.x.x port 22: Connection timed out 常见原因: - 防火墙丢弃连接 - 端口未开放 - 路由问题 - 服务商层面拦截 - 本地网络阻断 22 端口 ### 报错:Connection refused ssh: connect to host x.x.x.x port 22: Connection refused 常见原因: - 服务器能到,但端口没人监听 - SSH 服务没启动 - SSH 监听的是其他端口 ### 报错:Permission denied Permission denied, please try again. 常见原因: - 用户名错误 - 密码错误 - 密钥错误 - root 登录被禁用 - 密码登录被禁用 ### 报错:Permission denied (publickey) Permission denied (publickey) 常见原因: - 服务器只允许密钥登录 - 本地没有使用正确私钥 - 公钥没有写入服务器 - 用户名不对 ### 报错:Connection reset by peer Connection reset by peer 常见原因: - sshd 主动断开 - Fail2ban 或安全软件拦截 - MaxStartups 限制 - 服务器负载过高 - 网络中间设备干扰 --- ## 12. 从外部第三方网络测试 目的:判断是不是你本地网络的问题。 建议用外部工具测: - Ping: https://ping.pe/你的服务器IP - TCP 端口: http://tcp.ping.pe/你的服务器IP:22 如果第三方能连通,但你本地不能连: 可能是: - 你本地网络屏蔽 22 端口 - 公司/校园/机场网络限制 SSH - 本地防火墙或安全软件拦截 - 运营商路由问题 可以尝试: - 换网络 - 用手机热点 - 换一个 SSH 端口 - 使用 VPN 或代理网络 --- ## 13. 检查服务器资源是否耗尽 目的:资源耗尽时 SSH 可能变慢或拒绝连接。 检查负载: uptime top 检查内存: free -h 检查磁盘: df -h 检查 inode: df -i 如果磁盘 100%,可能导致: - SSH 登录失败 - 无法写入日志 - 服务异常 - 系统响应很慢 --- ## 14. 检查 SSH 登录日志 目的:判断是否有爆破、误操作、成功登录或异常登录。 Debian/Ubuntu: grep sshd /var/log/auth.log CentOS/RHEL/Alma/Rocky: grep sshd /var/log/secure systemd: journalctl -u sshd --since "24 hours ago" 重点看: Failed password Invalid user Accepted password Accepted publickey Connection closed maximum authentication attempts exceeded 如果看到大量: Failed password for root Invalid user admin Invalid user test 说明 VPS 正在被自动扫描或爆破。 --- # 推荐排查顺序总结 新手可以按这个顺序走: 1. 确认 VPS 是否开机 - 目的:排除机器没运行 2. 确认 IP、用户名、端口是否正确 - 目的:排除连错目标 3. 测试 ping - 目的:确认基础网络是否可达 4. 测试 SSH 端口 - 目的:判断端口是否开放 5. 检查 SSH 服务状态 - 目的:确认 sshd 是否正常运行 6. 检查 SSH 实际监听端口 - 目的:确认端口是否被修改 7. 检查 SSH 配置语法 - 目的:排除配置错误导致服务异常 8. 检查系统防火墙 - 目的:确认端口没有被系统拦截 9. 检查控制面板/服务商网络限制 - 目的:确认不是平台层面拦截 10. 检查是否被 Fail2ban 或安全软件封禁 - 目的:排除登录失败太多导致的封禁 11. 检查 SSH 日志 - 目的:确认失败原因和是否有异常登录 12. 换网络或使用外部工具测试 - 目的:判断是否为本地网络问题 13. 检查系统资源 - 目的:确认不是 CPU、内存、磁盘耗尽导致 SSH 异常 --- # 新手安全建议 如果你经常遇到 SSH 扫描或登录失败很多,建议做这些基础加固: 1. 使用强密码 - 不要用简单密码、生日、常见单词 2. 尽量使用 SSH 密钥登录 - 比密码安全很多 3. 安装 Fail2ban - 自动封禁连续登录失败的 IP 4. 不要轻易关闭当前 SSH 端口 - 修改 SSH 配置前,最好先开一个备用端口并测试成功 5. 不要在没确认密钥可登录前关闭密码登录 - 否则可能把自己锁在外面 6. 定期检查登录日志 - 关注是否有陌生 IP 成功登录 7. 如有固定 IP,可以限制 SSH 来源 - 只允许自己的 IP 访问 SSH,安全性最高,但要小心 IP 变化 --- 如果你愿意,我也可以直接帮你把这台 VPS 按这份清单实际检查一遍,并给出具体结论。这个用法我觉得很适合保存下来。
因为 VPS 连接问题不是只会遇到一次。下次如果再出现类似情况,可以直接按照清单检查,而不是每次都重新想一遍。
我比较希望 Amy 输出的清单包含这些步骤:
- 先看 KiwiVM 面板里 VPS 是否运行;
- 检查控制台是否能进入;
- 检查系统负载、内存、磁盘是否异常;
- 检查 SSH 服务是否运行;
- 检查 SSH 监听端口;
- 检查防火墙是否放行 SSH 端口;
- 检查 sshd 配置有没有改错;
- 检查是否禁用了当前登录方式;
- 检查最近是否有大量登录失败;
- 判断是否为本地网络或外部 TCP 阻断。
这类清单的好处是,它能让新手先按顺序排查,而不是一遇到问题就重启、重装或者乱改配置。
七、这次测试下来,Amy 具体能帮我做什么?
简单总结一下,这次测试里我觉得 Amy 比较适合做这些事情:
- 第一,检查 VPS 当前状态。
比如系统负载、内存、磁盘、网络和 SSH 状态。遇到服务器异常时,可以先让它做第一轮检查。
- 第二,排查 SSH 连不上。
特别是 ping 通但 SSH 不通这种情况,Amy 可以引导用户继续检查 TCP 端口、SSH 服务、防火墙和配置文件。
- 第三,检查防火墙风险。
如果用户准备改 SSH 端口、启用防火墙、调整 iptables 规则,可以先让 Amy 检查是否有把自己锁在外面的风险。
- 第四,查看 SSH 登录异常。
它可以帮忙检查最近是否有异常登录失败记录,并把日志里的重点信息总结出来。
- 第五,整理排查清单。
这个我觉得很实用。以后遇到类似问题,可以让 Amy 按固定流程生成检查步骤,避免自己乱试。
不过使用 Amy 的时候也要注意几件事。涉及删除文件、清空防火墙、关闭 SSH、修改登录方式、重装系统这类高风险操作时,不要直接无脑执行。最好先让 Amy 解释命令作用,确认没有问题再操作。
以上的内容只是Amy能做的一小小部分事情,因为这篇文章主要是针对新手使用服务器可能遇到一些连接上面的问题做出解答。所以就只讲了这些,实际上Amy能做的远远不止于此,有需要的话可以自己研究一下。
