如何解决ssh connect to host port 22 Connection refused

当遇到ssh:connecttohost[host]port22:Connectionrefused错误时,可能是因为SSH服务器未运行或端口问题。要解决,需检查SSH服务器状态、端口监听、防火墙设置、网络连接、客户端配置及服务器允许的IP列表。重启服务或调整安全策略如SELinux/AppArmor也可能有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到 “ssh: connect to host [host] port 22: Connection refused” 错误通常意味着SSH服务器未运行或无法在指定端口上进行连接。以下是解决此问题的故障排除步骤:
参考:
https://www.howtouselinux.com/post/fix-ssh-connect-to-host-port-22-connection-refused

  1. 验证SSH服务器状态:

    • 确保远程主机上的SSH服务器正在运行。使用以下命令检查SSH服务是否处于活动状态:
      systemctl status sshd
      
  2. 检查SSH端口:

    • 确认SSH服务器正在监听端口22。默认情况下,SSH使用端口22进行通信。如果SSH服务器配置为使用不同的端口,请在SSH命令中指定该端口:
      ssh -p [port] [username]@[host]
      
  3. 防火墙设置:

    • 检查是否有防火墙阻止SSH连接。确保防火墙配置中打开了端口22:
      sudo ufw allow 22  # 适用于Ubuntu/Debian
      sudo firewall-cmd --zone=public --add-port=22/tcp --permanent  # 适用于CentOS/RHEL
      
  4. 检查网络连接:

    • 确保没有网络问题导致连接失败。使用 ping 命令检查远程主机是否可达:
      ping [host]
      
  5. 检查SSH客户端配置:

    • 检查SSH客户端配置文件 (~/.ssh/config) 是否有任何错误设置导致问题。
  6. 检查远程主机访问权限:

    • 确保远程主机允许来自您的IP地址的SSH连接。如果需要,将您的IP地址添加到SSH服务器的允许列表中。
  7. 重启SSH服务:

    • 如果SSH服务器未运行,请使用适当的命令启动服务:
      sudo systemctl start sshd  # 适用于基于systemd的系统
      sudo service sshd start  # 适用于使用SysV init的系统
      
  8. 检查SELinux/AppArmor:

    • 如果使用SELinux(在CentOS/RHEL上)或AppArmor(在Ubuntu/Debian上),检查其策略以确保不会阻止SSH连接。

在执行这些步骤后,尝试再次使用SSH命令连接到远程主机。如果问题仍然存在,请仔细检查错误消息,以确定可能导致问题的具体细节。此外,检查SSH服务器的日志(Ubuntu/Debian上的 /var/log/auth.log 或CentOS/RHEL上的 /var/log/secure)以获取更多有关连接问题的信息。

在更改SSH服务器配置或防火墙设置之前,请谨慎行事,并确保具备适当的访问权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值