错误信息

当你尝试SSH连接服务器时,收到以下错误:

bash
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 ```

启动服务:

bash
sudo systemctl start sshd
sudo systemctl enable sshd

原因二:sshd监听非标准端口

检查sshd实际监听的端口:

bash
sudo ss -tlnp | grep sshd

如果监听的是其他端口(如2222),需要指定端口连接:

bash
ssh -p 2222 user@192.168.1.100

原因三:防火墙阻止

iptables检查:

bash
sudo iptables -L -n -v | grep 22
sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT

ufw (Ubuntu):

bash
sudo ufw allow 22/tcp

云服务器安全组:

如果是AWS/阿里云/腾讯云等,检查安全组入站规则是否开放22端口。

验证修复

bash
ssh -v user@192.168.1.100

看到 "Connection established" 表示成功。