ssh: connect to host port 22: Connection refused

Connection refused 错误通常意味着SSH服务在目标主机上未运行、端口被防火墙阻止,或者目标IP/端口配置有误。以下是可能的原因和解决方案:

1. 确认SSH服务在目标主机上运行

  • Linux/Mac:在目标主机上执行以下命令检查SSH服务状态:

    systemctl status sshd  # Ubuntu/Debian/CentOS
    

    如果未运行,使用以下命令启动:

    sudo systemctl start sshd
    sudo systemctl enable sshd  # 设置开机自启 

    未开启

    未开启

  • Windows:需确认是否启用了OpenSSH服务(默认不启用):

    Get-Service sshd  # 检查状态
    Start-Service sshd  # 启动服务
    

2. 检查防火墙设置

  • 目标主机防火墙:确保SSH端口(默认22)未被阻止:

    # Ubuntu/Debian (ufw)
    sudo ufw allow 22/tcp
    sudo ufw reload# CentOS (firewalld)
    sudo firewall-cmd --add-service=ssh --permanent
    sudo firewall-cmd --reload
    
  • 本地防火墙:检查本地机器是否阻止了出站连接。

3. 验证IP地址和端口

  • 确认目标IP地址(172.19.232.187)正确,可通过ping测试连通性:
    ping 172.19.232.187
    
  • 确认SSH服务监听的是22端口。在目标主机上执行:
    ss -tulpn | grep :22  # Linux
    netstat -ano | findstr :22  # Windows
    

4. 尝试其他端口或连接方式

  • 如果SSH服务监听在非22端口(如2222),使用 -p 参数指定端口:
    ssh user@172.19.232.187 -p 2222
    
  • 尝试通过其他网络连接(如VPN),排除网络隔离问题。

5. 联系系统管理员

  • 如果是远程服务器,可能需要联系管理员确认:
    • SSH服务是否正常运行。
    • 防火墙规则是否允许外部访问。
    • 服务器是否被限制访问(如IP黑名单)。