- 错误类型:
- 其他错误
- 错误名称:
- SSH连接被拒绝
- 英文名称:
- Connection Refused
- 错误描述:
- 不幸的是,当您尝试通过SSH连接到服务器时,可能会发生许多情况,这可能会导致显示“Connection refused(连接被拒绝)”错误。
随着VPS服务器的流行,SSH也成为了站长必备的开发工具。该工具可授予高级用户访问关键平台和软件的权限,使编码和其他任务更容易,更快速且更有组织性。
如果经常使用SSH,相信对“Connection refused(连接被拒绝)”错误不会陌生,第一次遭遇这样的错误,甚至可能会让站长手足无措。但,这其实是一个常见问题,完全可以通过简单的故障排除进行修复。
本文,我们将讨论什么是SSH以及何时使用它。然后,解释一些可能导致SSH连接被拒绝的常见原因,包括在PuTTY中。最后,提供一些故障排除教程。
什么是SSH,何时应使用它?
SSH(全称为Secure Socket Shell)是一种用于通过不安全网络安全访问站点服务器的协议。换句话说,这是一种安全登录远程服务器及使用命令行的终端界面:
使用SSH访问服务器
与仅允许您上载,删除和编辑服务器上的文件FTP文件传输协议不同的是,SSH可以完成各种各样的任务。例如,如果WordPress错误使您无法进入网站,则可以通过SSH远程访问服务器。
该协议支持使用几个关键的开发人员工具,包括:
- WP-CLI – WordPress命令行。可用于各种任务,包括新安装,批量更新插件和导入媒体文件。
- Composer – 一个PHP软件包管理器。有了它,你可以提取必要的库和依赖项来编辑网站编码时使用多个框架。
- Git – 一个版本控制系统用于跟踪码的变化。这对于团队协作项目特别有用。
- npm – 一个JavaScript包管理器。它包括命令行和JavaScript软件注册表。
请务必注意,使用SSH需要熟悉服务器运维管理知识。不建议小白用户直接尝试自行解决SSH问题,应该寻求开发人员或服务器提供商帮助。
SSH很安全高效,但也能够让你感受“一失足千古恨”。输入简单的错误命令可能会导致整个服务器瘫痪,因此,了解自己在做什么至关重要。
为什么SSH连接被拒绝?
不幸的是,当您尝试通过SSH连接到服务器时,可能会发生许多情况,这可能会导致显示“Connection refused(连接被拒绝)”错误。
以下是一些可能会给您带来麻烦的最常见问题。
1. 原因:本地计算机上未安装SSH客户端
要使用 PuTTY 或类似程序建立 SSH 连接,需要两个组件:本地计算机上的 SSH 客户端和远程服务器上运行的 SSH 守护进程。SSH 客户端启动连接,而 SSH 守护进程则侦听传入的连接请求并进行验证。
在大多数情况下,服务器(尤其是托管 WordPress 主机)都预装了必要的守护程序。不过,如果您使用的是专用主机,可能需要手动安装守护进程。
安装了守护程序后,服务器就可以接受 SSH 连接,从而让你可以与服务器建立安全、经过验证的连接。
解决方案:安装SSH客户端
你可以在终端窗口进行快速检查,以确定系统上是否安装了 SSH 客户端。
只需键入 “ssh” 并点击 Enter。
如果终端显示可用的 ssh 命令选项列表,则表明 SSH 客户端已安装在系统中。我的情况就是如此:
但是,如果响应是 “command not found”,则说明未安装 SSH 客户端,需要安装 OpenSSH 客户端才能启用 SSH 功能。
要在机器上安装 SSH 客户端,请按照以下步骤操作:
- 在系统上打开终端。
- 根据操作系统,执行以下命令之一:
对于 Ubuntu/Debian 系统:
sudo apt install openssh-client
对于 CentOS/RHEL 系统:
sudo yum install openssh-client
2. 原因:远程服务器上未安装或运行SSH守护进程
如果 SSH 守护进程不可用或未运行,可能会导致与 SSH 本地主机的传入连接受阻。
解决方法:手动安装SSH守护进程软件包
大多数虚拟主机公司通常会在服务器上预装 SSH 守护进程。不过,如果 SSH 守护进程的状态报告为 Down,则应联系主机提供商解决此问题。
要检查 SSH 守护进程的状态,请根据系统使用以下命令之一:
sudo service ssh status
或
sudo systemctl status sshd
或
systemctl status ssh
如果您看到 active (running),如上面的截图所示,这意味着服务处于活动状态。
因此,要检查 SSH 守护进程服务是否处于活动状态,请运行此命令查看 SSH 进程是否处于活动状态:
ps aux | grep sshd
如果 SSH 正在运行,你将看到包含 sshd 行的输出。如果没有,则 SSH 可能已停机。
在管理专用服务器或本地主机时,有必要手动安装 SSH 守护进程软件包。
安装 OpenSSH 客户端和服务器应用程序非常简单。要安装 OpenSSH 服务器应用程序和相关支持文件,请在终端执行以下命令:
sudo apt install openssh-server
通过执行该命令,可以安装所需的组件,以确保 SSH 守护进程正常运行并建立成功的 SSH 连接。
3. 原因:防火墙阻止SSH连接
如果出现 “SSH 连接被拒绝 ”错误,服务器的防火墙很可能阻止了传入的 SSH 连接。要解决这个问题,必须应用特定的防火墙规则,允许 SSH 连接请求。
解决方案:允许SSH连接通过防火墙
要检查防火墙是否阻止了 SSH 端口,请使用以下命令:
sudo ufw status
该命令将显示当前的防火墙规则。在允许的端口列表中查找 SSH 端口(默认为 22)。如果 SSH 端口未列出,可以使用:
sudo ufw allow ssh
如果服务器使用自定义 SSH 端口(如 2222),请将 ssh 替换为端口号:
sudo ufw allow 2222
执行命令后,防火墙将更新为允许传入 SSH 连接。
4. 原因:SSH凭据或端口配置不正确
要建立从客户端到服务器的 SSH 连接,必须提供特定的凭证。如果其中任何一项设置不正确,服务器就会发出“拒绝连接”信息。
以下是 SSH 连接所需的详细信息:
- Hostname:指服务器的地址,可以是 IP 地址、服务器名称或网站域名(如果域名的 A 记录指向服务器)。
- SSH username:必须提供与网站或服务器上 SSH 服务器相关联的用户名。
- Password:如果使用基于密码的身份验证,请确保输入正确的密码。如果使用的是 SSH 密钥,密码提示指的是私人 SSH 密钥的口令。
- Port:SSH 连接的默认端口是 22。不过,许多托管提供商使用自定义 SSH 端口来增强安全性。
您可以通过运行以下命令来验证是否打开了正确的 SSH 端口:
grep Port /etc/ssh/sshd_config
执行此命令将显示 SSH 所用端口号的输出。
解决方案:仔细检查输入的证书
登录主机提供商的控制面板,确保您拥有正确的证书。查找显示 SSH 凭据的部分。
在输入凭据时,务必仔细检查并考虑可能出现的错别字或输入错误的 IP 地址或端口。注意核实凭证的准确性,确保输入正确。
5. 原因:SSH服务未运行或需要重启
解决 SSH“拒绝连接”错误的另一个办法是重启 SSH 服务。
解决方案:重启SSH服务
要重启 SSH 服务,请使用以下命令之一:
sudo service ssh restart
或者
sudo systemctl restart sshd
该命令将重新启动 SSH 服务。此操作可让 SSH 服务重新启动,从而解决任何潜在问题并建立成功的 SSH 连接。
任何妨碍 SSH 连接的潜在问题或故障都可以通过重启 SSH 服务来解决。
注意: sudo service ssh restart 命令可能无法在所有系统上运行。有些系统使用 systemctl。
6. 原因:SSH访问已禁用
在某些情况下,服务器上可能安装了 SSH 守护进程,但出于安全原因被禁用。如果 SSH 访问被禁用,服务器将拒绝接受 SSH 连接请求。
解决方案:启用SSH访问
要启用 SSH 访问,请使用以下命令启动 SSH 服务:
sudo service ssh start
如果命令执行无误,说明 SSH 服务已成功启动。如果服务已在运行,该命令不会做任何更改。
您也可以使用以下命令启用 SSH 服务,使其在系统启动时自动启动:
sudo systemctl enable ssh
这可确保 SSH 在服务器重启后仍处于活动状态。
7. 原因:SSH端口已关闭
SSH 连接依赖特定端口(默认为 22)与服务器通信。如果该端口关闭,服务器将拒绝 SSH 连接请求。
解决方案:打开SSH端口
1. 检查SSH端口是否打开
要检查 SSH 端口是否处于打开和监听状态,请运行
sudo lsof -i:22
如果输出结果的 STATE(状态)栏下包含 LISTEN(连接),则表示端口已打开。否则,您需要打开它。
注意:
有些服务器上,lsof -i:22 等 sudo 命令受到限制。请使用
netstat -tnl | grep :22
在我的案例中,输出结果显示 SSH 正在运行,并主动监听 IPv4(0.0.0.0:22)和 IPv6(:::22)的 22 端口。
如果没有输出,说明端口 22 已关闭。
2. 验证SSH端口配置
要检查 SSH 使用的端口,请运行
grep Port /etc/ssh/sshd_config
如果端口被注释(#端口 22)或更改(如端口 2222),请编辑配置文件:
sudo nano /etc/ssh/sshd_config
- 取消端口一行的注释(#端口 22 → 端口 22)
- 如果需要其他端口,请相应更新
- 保存并退出(CTRL + X,然后 Y,然后 Enter)
3. 重启SSH服务
更新端口后,重启 SSH 服务:
sudo service ssh restart
或者
sudo systemctl restart ssh
4. 在防火墙中打开SSH端口
如果 SSH 因防火墙规则而被阻止,请允许端口 22 的流量:
sudo ufw allow 22
为什么PuTTY连接被拒绝?
PuTTY是一款最受欢迎的SSH客户端,帮助站长在SSH协议下安全地连接并管理服务器。与PuTTY相似的另一个客户端是Xshell。
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故障排除的其他技巧和最佳实践
既然我们已经了解了一些问题和解决 SSH“拒绝连接”错误的方法,下面就让我们来探讨 SSH 故障排除的其他技巧和最佳实践。
1. 探索SSH调试和日志记录技巧
在 Linux 中,你可以使用“verbose”或“debugging”模式来分析 SSH 问题。启用该模式后,SSH 可以显示详细的调试信息,帮助排除连接、配置和身份验证问题。
有三个级别的冗长度可供选择:
第 1 级 (-v): 要激活该级别,可以在使用 ssh 命令访问远程服务器时添加选项 -v。例如
ssh -v [server_ip]
第 2 级 (-vv): 该级别提供更高的冗余级别。可以使用 -vv 选项启用它:
ssh -vv [server_ip]
第 3 级 (-vvv): 该级别提供最高的冗余级别,并提供最详细的调试信息。要激活它,可以使用 -vvv 选项:
ssh -vvv [server_ip]
通过使用所需的冗余级别运行 SSH 命令,可以深入了解 SSH 连接过程中出现的任何问题。
除了冗余模式,你还可以使用另一种方法,通过检查系统日志来诊断 SSH 问题。
Linux 发行版通常会在 /var/log/auth.log
或 /var/log/secure
等文件中存储 SSH 相关日志。你可以检查这些日志中与 SSH 连接相关的任何错误信息或警告。
通过使用“verbose”模式和查看系统日志,你可以更好地了解 SSH 问题,并有效地排除故障。
2. 实施SSH安全措施
实施适当的安全措施对于保护 SSH 连接和确保系统完整性至关重要。
请考虑以下做法:
- 禁用 SSH 密码验证:使用基于 SSH 密钥的身份验证,而不是依赖密码。这种方法通过使用公钥对和私钥对提供更强的安全性。
- 设置强大的密码/口令:如果仍使用密码验证,请确保为 SSH 账户设置强大、唯一的密码或口令。使用大小写字母、数字和特殊字符的组合。
- 限制 SSH 访问:限制只有授权用户才能访问 SSH。定期检查和更新允许的用户列表,最大限度地减少潜在漏洞。
- 将 SSH 配置为使用非默认端口:将默认 SSH 端口(22)更改为不同的非标准端口,有助于减少自动扫描尝试和针对 SSH 的潜在攻击。
- 利用防火墙规则:配置防火墙规则,只允许来自受信任 IP 地址或网络范围的 SSH 连接。这样可以通过限制 SSH 访问特定来源来增加额外的保护层。
- 禁用 SSH 根登录:禁止通过 SSH 直接登录 root。取而代之的是使用普通用户账户,并在必要时使用 sudo 命令切换到 root 用户。这样可以防止针对 root 账户的未经授权的访问尝试。
- 定期查看 SSH 日志:监控并查看 SSH 日志,以发现可疑活动或登录尝试失败。不寻常或重复失败的登录尝试可能表明存在暴力或其他恶意活动。
3. 定期更新和维护SSH组件
定期更新和维护 SSH 组件对于保持系统安全和最新状态至关重要。
请考虑以下做法:
- 更新 SSH 软件:使用最新版本的 SSH 软件,包括客户端和服务器组件。定期更新系统的 SSH 软件包或软件,以便从安全补丁和漏洞修复中获益。
- 启用自动更新:配置系统,以便在有更新时自动更新 SSH 软件。这样可以确保及时安装重要的安全补丁。
- 定期检查 SSH 配置:定期检查和审核 SSH 配置,包括 SSH 服务器设置和客户端配置,确保它们符合安全要求和最佳实践。
- 备份 SSH 配置和密钥:定期备份 SSH 配置和密钥文件。这有助于防止 SSH 设置意外丢失或损坏,并确保在需要时可以恢复。
- 监控 SSH 供应商公告:随时了解 SSH 软件供应商或发行版的安全公告和通知。订阅相关的安全邮件列表或关注官方渠道,及时接收有关漏洞和补丁的信息。
通过实施这些 SSH 安全实践并保持定期更新和维护,可以增强 SSH 连接的安全性和稳定性,降低潜在风险。
在进行 SSH 故障排除时,你可能还会遇到与网站或网络应用程序有关的问题。要了解有关解决常见网站问题的更多信息,请查看我们的综合指南:如何解决常见的 WordPress 问题。本资源将帮助您识别和解决在维护和管理 WordPress 网站过程中可能出现的各种问题。
小结
在许多情况下,使用SSH连接服务器很方便。尤其是当您无法访问WordPress仪表盘,你还可以通过WP-CLI运行命令,使用Git跟踪站点代码的更改,以恢复站点访问。
解决“SSH 连接被拒绝”错误对于建立对 WordPress 网站的安全远程访问至关重要。在本故障排除指南中,我们探讨了导致该错误的常见原因,并提供了实用的解决方法。
了解根本原因(如 SSH 客户端丢失、防火墙阻塞、凭据或端口配置不正确以及 SSH 服务问题)后,你就能有效地排除故障并解决该错误。
只要按照概述的方法逐步操作,包括安装/配置 SSH 客户端、确保 SSH 守护进程的存在、解决防火墙问题、验证凭证和端口配置以及重启/启用 SSH 服务,就能克服这些挑战,成功建立与 WordPress 网站的 SSH 连接。
相关阅读:《站长必藏:26个Linux服务器管理常用SSH命令行》
评论留言
唇枪舌剑 (5)
SUN
2023.3.16 10:03
谢谢大佬指点,启动服务就好了
systemctl start ssh.service
江圳一
2022.12.8 19:12
找不到指定文件怎么办?
WBOLT_COM
2022.12.8 22:12
找不到什么指定文件?
xiaohuolong
2022.2.16 18:02
求问为什么所有代码我再mac里都找不到command
WBOLT_COM
2022.2.17 12:02
环境没配置好?