如何解决SSH连接 “Connection Refused”报错

ssh-connection-refused-1024x512-1

随着VPS服务器的流行,SSH也成为了站长必备的开发工具。该工具可授予高级用户访问关键平台和软件的权限,使编码和其他任务更容易,更快速且更有组织性。

如果经常使用SSH,相信对“Connection refused(连接被拒绝)”错误不会陌生,第一次遭遇这样的错误,甚至可能会让站长手足无措。但,这其实是一个常见问题,完全可以通过简单的故障排除进行修复。

本文,我们将讨论什么是SSH以及何时使用它。然后,解释一些可能导致SSH连接被拒绝的常见原因,包括在PuTTY中。最后,提供一些故障排除教程。

什么是SSH,何时应使用它?

SSH(全称为Secure Socket Shell)是一种用于通过不安全网络安全访问站点服务器的协议。换句话说,这是一种安全登录远程服务器及使用命令行的终端界面:

使用SSH访问服务器

使用SSH访问服务器

与仅允许您上载,删除和编辑服务器上的文件FTP文件传输协议不同的是,SSH可以完成各种各样的任务。例如,如果WordPress错误使您无法进入网站,则可以通过SSH远程访问服务器。

该协议支持使用几个关键的开发人员工具,包括:

  • WP-CLI – WordPress命令行。可用于各种任务,包括新安装,批量更新插件和导入媒体文件。
  • Composer – 一个PHP软件包管理器。有了它,你可以提取必要的库和依赖项来编辑网站编码时使用多个框架。
  • Git – 一个版本控制系统用于跟踪码的变化。这对于团队协作项目特别有用。
  • npm – 一个JavaScript包管理器。它包括命令行和JavaScript软件注册表。

请务必注意,使用SSH需要熟悉服务器运维管理知识。不建议小白用户直接尝试自行解决SSH问题,应该寻求开发人员或服务器提供商帮助。

SSH很安全高效,但也能够让你感受“一失足千古恨”。输入简单的错误命令可能会导致整个服务器瘫痪,因此,了解自己在做什么至关重要。

为什么SSH连接被拒绝?

不幸的是,当您尝试通过SSH连接到服务器时,可能会发生许多情况,这可能会导致显示“Connection refused(连接被拒绝)”错误。

以下是一些可能会给您带来麻烦的最常见问题。

1. SSH服务关闭

使用SSH连接服务器的前提是,服务器必须正常运行SSH daemon-该程序在后台运行以侦听和接收连接。

如果此服务关闭,您将无法成功连接到服务器,并且可能会收到“Connection refused(连接被拒绝)”错误:

终端连接被拒绝报错

终端连接被拒绝报错

服务器SSH daemon可能由于多种原因而关闭,包括爆发性的流量高峰,数据中心故障,DDoS攻击等。除了将在下面提到的故障排除步骤外,您应该主动联系服务器提供商,以确定问题的根本原因。

如果您怀疑SSH服务可能已关闭,则可以运行此命令了解:

sudo service ssh status

如果命令行返回关闭状态,则您可能已经找到导致连接错误的原因。

2. SSH凭证有误

一般情况下很少人会犯这个错,但谁能保证呢?

因此,务必确保在尝试连接服务器时输入正确的凭据信息。

  • 主机名-服务器的IP地址或域名。
  • 用户名-服务器管理员用户名。
  • 密码- 管理员账号对应的密码。
  • 端口-一般默认端口为22。但是,出于安全原因,某些服务器提供商可能会更改SSH端口。

您还可以通过运行以下命令来检查哪个端口用于SSH:

grep Port /etc/ssh/sshd_config

因此在无法链接SSH时,应该检查并确保输入正确的凭据,特别要检查是否输入错误的IP地址或端口。

3. 端口处理关闭状态

“端口”只是连接到服务器时定向到的端点。除了确保您输入正确的端口之外,您还需要检查使用的端口是否已启用。

任何开放的端口都是安全漏洞,因为黑客可以尝试利用它并获得对服务器的访问权限。因此,未使用的端口通常会关闭以防止受到攻击。

如果端口22或自定义SSH端口已关闭,则也可能导致“Connection refused(连接被拒绝)”错误。您可以通过运行以下命令来检查端口是否正在侦听:

sudo netstat -plnt

命令行应返回端口及其各自的“状态”列表。如果你要使用的端口为22,那么它的状态应该为LISTEN。如果不是,则需要重新打开端口才能连接到服务器。

4. 服务器未安装SSH服务

如前所述,服务器使用SSH daemons侦听并接受连接。因此,如果你需要连接的服务器未安装SSH服务,则将无法使用SSH访问该服务器。

一般来说,默认情况下,几乎所有VPS服务器都安装了SSH daemon。未安装这种情况多出现在本地主机或专用服务器上。

5. 防火墙设置拦截了SSH连接

由于开放端口存在安全风险,因此为保护服务器免受黑客攻击而安装的防火墙有时会拦截服务器连接。不幸的是,服务器管理员尝试通过SSH进入其服务器也可能会由于防火墙设置而收到“拒绝连接”错误。

如果您的设置似乎都正常,但仍然无法连接,请查看防火墙规则。您可以使用以下命令行来检测:

sudo iptables-save # display IPv4 rules
sudo ip6tables-save # display IPv6 rules

返回的信息不尽相同,您需要查找以下元素以确定防火墙是否拦截SSH连接:

  • dport 22:指目标端口,对于SSH,通常是端口22。
  • REJECT:这表明从指定的目的地拒绝连接。
  • DROP:与REJECT一样,这意味着到相关端口的连接被拦截。

如果在上面关于dport 22的命令结果中搜索,应该能够确定防火墙是否阻止SSH连接。如果是,则必须更改规则以接受请求。

为什么PuTTY连接被拒绝?

PuTTY是一款最受欢迎的SSH客户端,帮助站长在SSH协议下安全地连接并管理服务器。与PuTTY相似的另一个客户端是Xshell。

PuTTY下载页面

PuTTY下载页面

如果在使用PuTTY连接服务器时出现“Connection refused(连接被拒绝)”错误,则可能是上面列出的原因之一。

这是SSH连接错误,无论您使用的是PuTTY,终端还是其他任何通过SSH连接到服务器的软件。

如何解决SSH连接错误?

遇到SSH连接错误时,根据原因可以采取一些步骤来进行故障排除。以下是一些技巧,希望能够帮助你解决“Connection refused(连接被拒绝)”错误:

  • 如果是SSH服务已关闭。 请与您的主机提供商联系,以了解为什么您的SSH服务未运行。对于localhost或专用服务器,您可以使用命令  sudo service ssh restart 尝试使其再次运行。
  • 如果是输入了错误SSH凭据。 使用grep Port /etc/ssh/sshd_config 命令仔细检查SSH端口后  ,请尝试使用正确的详细信息再次连接。
  • 如果是SSH端口已关闭。 在要连接的服务器上安装SSH daemon,或更改防火墙规则以接受到SSH端口的连接。
  • 如果是服务器未安装SSH。 使用命令sudo apt install openssh-server在要连接的服务器上安装SSH工具(例如OpenSSH)。
  • 如果是防火墙拦截SSH连接。  通过将目标端口的设置更改为ACCEPT来禁用防火墙规则阻止SSH连接。

如果你使用的服务器提供技术支持,不妨直接与技术人员联系,比起尝试自行解决问题可能更明智。如果上述解决方案均无效,则可以这方面技术比较靠谱的人员协助,或者通过互联网找找看是否有应对的措施。

您是否通过SSH收到“Connection refused(连接被拒绝)”错误?借助此指南,了解为什么发生这种情况以及如何解决SSH连接错误。

小结

在许多情况下,使用SSH连接服务器很方便。尤其是当您无法访问WordPress仪表板,你还可以通过WP-CLI运行命令,使用Git跟踪站点代码的更改,以恢复站点访问。

尽管SSH连接错误可能是由多种原因引起的,但以下是一些最常见的原因:

  1. SSH服务已关闭。
  2. SSH连接凭证错误。
  3. SSH端口已关闭。
  4. 服务器未安装SSH。
  5. 防火墙设置拦截了SSH连接。

相关阅读:《站长必藏:26个Linux服务器管理常用SSH命令行

评论留言

唇枪舌剑 (5)

  • SUN的头像

    SUN

    2023.3.16 10:03

    谢谢大佬指点,启动服务就好了
    systemctl start ssh.service

    回复
  • 江圳一的头像

    江圳一

    2022.12.8 19:12

    找不到指定文件怎么办?

    回复
    • WBOLT_COM

      2022.12.8 22:12

      找不到什么指定文件?

  • xiaohuolong的头像

    xiaohuolong

    2022.2.16 18:02

    求问为什么所有代码我再mac里都找不到command

    回复
    • WBOLT_COM

      2022.2.17 12:02

      环境没配置好?