Termius 无法连接主机排查 | 超时、拒绝、密钥不匹配、Palo Alto 特殊情况
通用排查顺序
SSH 连接失败的原因分两层——服务器端和 Termius 客户端。90% 的问题是服务器端的,别先在 Termius 里瞎调。
顺序:从服务器端往外层查。
1. 服务器 sshd 服务在运行吗?
2. 服务器防火墙放行 SSH 端口了吗?
3. 服务器密钥配置正确吗(authorized_keys)?
4. 中间网络路由可达吗?
5. Termius 客户端配置匹配吗?
服务器端检查清单
sshd 服务状态
# systemd 系统(Debian 10+ / Ubuntu 18+ / CentOS 7+)
sudo systemctl status sshd
# Debian / Ubuntu 可能叫 ssh,不是 sshd
sudo systemctl status ssh
# 传统 init 系统
sudo service ssh status
# 确认 22 端口在监听
sudo ss -tlnp | grep :22
# 或
sudo netstat -tlnp | grep :22
sshd 没运行? → sudo systemctl start sshd && sudo systemctl enable sshd
没在监听 22 端口? → 检查 /etc/ssh/sshd_config 的 Port 设置(可能用了非标准端口)
服务器防火墙
# firewalld(CentOS / RHEL 7+)
sudo firewall-cmd --list-all
# 应该看到 22/tcp 或自定义 SSH 端口
# ufw(Ubuntu / Debian)
sudo ufw status
# 应该看到 SSH 是 Allow
# iptables
sudo iptables -L -n | grep 22
防火墙没放行? → 开对应的端口(注意服务器可能用了非标准 SSH 端口)
服务器端 SSH 配置
检查 /etc/ssh/sshd_config 的关键配置:
# 密码认证是否开启
grep PasswordAuthentication /etc/ssh/sshd_config
# 应该是 yes(如果用密码登录)
# root 登录是否允许
grep PermitRootLogin /etc/ssh/sshd_config
# 如果用 root 登录必须是 yes
# 密钥认证是否开启
grep PubkeyAuthentication /etc/ssh/sshd_config
# 应该是 yes
# 允许的登录用户
grep AllowUsers /etc/ssh/sshd_config
grep DenyUsers /etc/ssh/sshd_config
# 如果有 AllowUsers,确认你的用户在里面
# 修改后重启 sshd
sudo systemctl restart sshd
authorized_keys 文件
密钥认证失败时,检查:
# 1. authorized_keys 文件存在且权限正确
ls -la ~/.ssh/
# drwx------ .ssh 目录(700)
# -rw------- authorized_keys(600)
# 2. 公钥确实在里面
cat ~/.ssh/authorized_keys
# 应该有一整行 ssh-ed25519 / ssh-rsa 开头的公钥
# 3. 公钥和 Termius 里用的是同一个
# 在 Termius Keys 里找到对应密钥 → 右键 → Copy Public Key → 对比服务器上的内容
网络连通性
客户端测试
从你 Termius 所在的电脑,用终端(不是 Termius) 测试网络:
# 测试 IP 连通
ping <服务器IP>
# 测试端口连通
nc -zv <服务器IP> <SSH端口>
# 或
telnet <服务器IP> <SSH端口>
# 如果 nc / telnet 超时或被拒绝,不是 Termius 的问题,是网络不通
# 测试路由
traceroute <服务器IP>
# 看路由在哪一跳断的
如果网络层不通,检查:
- 中间路由器 / 防火墙
- 云服务器安全组(AWS Security Group、阿里云安全组等)
- 如果有 Jump Host,先测 Jump Host 能不能连
移动网络特别注意
- Wi-Fi 连不上? 试试换 4G / 5G,可能是公司 Wi-Fi 出口防火墙拦了
- 4G / 5G 连不上? 试试换 Wi-Fi,某些运营商的 NAT 会导致回包问题
- 国内用户注意: 某些运营商对境外 22 端口有 QoS 限速
Termius 客户端检查
排除了服务器和网络问题,再看 Termius 端:
主机配置逐项核对
| 字段 | 检查 |
|---|---|
| Host(IP / 域名) | 和服务器实际值对得上吗? |
| Port | 服务器 sshd_config 里的端口是多少?默认 22 但可能改过 |
| Username | 大小写对吗?root / admin / ubuntu |
| Protocol | SSH / SFTP / Mosh 选对了吗? |
| Identity | 密码 / 密钥选对了吗?密钥在 Termius 里导入了吗? |
| Jump Host | 有跳板机配置吗?跳板机本身能连吗? |
终端里直接用 ssh 命令测试
用你电脑自带的 SSH 客户端(不是 Termius)测试:
ssh -v user@server.example.com -p 22
加 -v 参数会输出详细握手过程:
- 如果系统 ssh 也连不上 → 问题不在 Termius,在服务器 / 网络
- 如果系统 ssh 能连上但 Termius 不行 → Termius 配置有问题
Known Hosts 冲突
如果服务器换了密钥(比如重装了系统),Termius 会拒绝连接:
- 提示类似「host key verification failed」
- 解决:Termius 设置 → Known Hosts → 找到那台服务器的条目 → 删除
- 下次连接时重新接受新密钥指纹
特殊情况
Palo Alto 网络设备
Palo Alto 的某些型号在 SSH 身份认证通过后会立即断开,显示类似「Please login using a valid account」的错误。
原因: 这些设备用的是 exec channel 的认证,和 Termius 的 Shell 集成(Autocomplete、导入历史、自动检测 OS)冲突。
解法: 禁用依赖 exec channel 的功能:
- 主机编辑 → Shell Integration → 关闭 Autocomplete
- 关闭 Import Shell History
- 关闭 Detect OS
关掉这些功能后,密码认证就能正常工作了。
Mosh 连接问题
- 服务器必须装了
mosh包(apt install mosh/yum install mosh) - 防火墙放行 UDP 60000-61000 范围
- Mosh 客户端先通过 SSH 登录启动 mosh-server,如果 SSH 本身连不上,Mosh 也连不上
本地 / 局域网连接问题(iOS / macOS)
iOS / macOS 连接本地设备的特别检查:
- iOS:系统设置 → Termius → 本地网络权限必须开
- macOS:系统设置 → 网络 → 防火墙不要拦 Termius
终极手段
所有都试过还不行:
- 重启 Termius(不重启整个电脑,先 App 内部完全退出重开)
- 清 Vaults 缓存(设置 → Troubleshooting → Clear Cache)
- 重新导入密钥、重建主机配置(可能配置文件损坏)
- 提交 Termius 支持请求,带上诊断日志
继续「常见问题汇总」。