错误信息
当你尝试SSH连接服务器时,收到以下错误:
ssh: connect to host 192.168.1.100 port 22: Connection refused这个错误与超时不同——连接被立即拒绝,说明服务器可达但端口22没有服务在监听,或者防火墙主动拒绝连接。
快速诊断
```bash # 1. 检查服务器是否可达 ping -c 3 192.168.1.100
# 2. 测试22端口是否开放 nc -zv 192.168.1.100 22 -w 3
# 3. 如果你有控制台访问权限,登录服务器检查 ssh localhost # 在服务器上测试 ```
原因一:sshd服务未运行
最常见的原因是SSH守护进程没有启动。
检查服务状态:
```bash # RHEL/CentOS/Fedora sudo systemctl status sshd
# Debian/Ubuntu sudo systemctl status ssh
# 通用检查 ps aux | grep sshd ```
启动服务:
sudo systemctl start sshd
sudo systemctl enable sshd原因二:sshd监听非标准端口
检查sshd实际监听的端口:
sudo ss -tlnp | grep sshd如果监听的是其他端口(如2222),需要指定端口连接:
ssh -p 2222 user@192.168.1.100原因三:防火墙阻止
iptables检查:
sudo iptables -L -n -v | grep 22
sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPTufw (Ubuntu):
sudo ufw allow 22/tcp云服务器安全组:
如果是AWS/阿里云/腾讯云等,检查安全组入站规则是否开放22端口。
验证修复
ssh -v user@192.168.1.100看到 "Connection established" 表示成功。