如何修复SSH Connection Refused错误?详细指南

2021年11月18日22:28:30 发表评论 7,620 次浏览

介绍

你在通过SSH访问远程服务器时遇到问题吗?如果 SSH 响应“Connection Refused”消息,你可能需要修改请求或检查设置,如何修复SSH Connection Refused错误

在本教程中,你将找到 SSH Connection Refused错误的最常见原因。

为什么当我使用 SSH 时出现Connection Refused

尝试通过 SSH 连接到你的服务器时,你可能会收到“Connection Refused”错误的原因有很多。要解决此问题,你首先需要确定系统拒绝你通过 SSH 连接的原因。

你将在下面找到一些可能导致 SSH Connection Refused的最常见原因。

未安装 SSH 客户端

解决SSH Connection Refused错误:在排除其他问题之前,第一步是检查你是否正确安装了 SSH。你正在访问服务器的机器应该设置了 SSH 客户端。如果没有正确的客户端设置,你将无法远程访问服务器。

要检查系统上是否有 SSH 客户端,请在终端窗口中键入以下内容:

ssh
如何修复SSH Connection Refused错误?详细指南

如果终端提供ssh命令选项列表,则 SSH 客户端已安装在系统上。但是,如果它以command not found响应,则需要安装 OpenSSH 客户端。

解决方案:安装SSH客户端

如何修复SSH Connection Refused错误?要在你的计算机上安装 SSH 客户端,请打开终端,然后运行下面列出的命令之一。

对于 Ubuntu/Debian 系统:

sudo apt install openssh-client

对于 CentOS/RHEL 系统:

sudo yum install openssh-client

注意:有关安装的分步指南,请查看如何在 CentOS 上安装 OpenSSH或如何在 Ubuntu 上启用 SSH。

服务器上未安装 SSH 守护程序

就像你需要客户端版本的 SSH 来访问远程服务器一样,你需要服务器版本来侦听和接受连接。因此,如果 SSH 服务器丢失或设置无效,服务器可能会拒绝传入连接。

要检查远程服务器上的 SSH 是否可用,请运行以下命令:

ssh localhost

如果输出响应为“拒绝连接”,请继续在服务器上安装 SSH。

如何修复SSH Connection Refused错误?详细指南

解决方案:在远程服务器上安装 SSH

SSH Connection Refused解决办法:解决缺少 SSH 服务器的问题,请参阅如何安装 OpenSSH 服务器。

凭据错误

输入错误或不正确的凭据是 SSH Connection Refused的常见原因。确保你没有错误输入用户名密码

然后,检查你是否使用了正确的服务器IP 地址

最后,确认你打开了正确的SSH 端口。你可以通过运行来检查:

grep Port /etc/ssh/sshd_config

输出显示端口号,如下图所示。

如何修复SSH Connection Refused错误?详细指南

注意:你可以使用password authenticationpublic key authentication(无密码 SSH 登录)通过 SSH 连接到远程系统。如果要设置公钥验证,请参阅如何设置无密码 SSH 登录。

SSH 服务已关闭

解决SSH Connection Refused错误:SSH 服务需要启用并在后台运行。如果服务关闭,SSH 守护进程将无法接受连接。

要检查服务的状态,请输入以下命令:

sudo service ssh status

输出应响应服务处于活动状态。如果终端响应服务关闭,请启用它以解决问题。

如何修复SSH Connection Refused错误?详细指南

解决方案:启用SSH服务

如何修复SSH Connection Refused错误?如果系统显示 SSH 守护进程未激活,你可以通过运行以下命令启动该服务:

systemctl start sshd

要使服务在启动时运行,请运行以下命令:

sudo systemctl enable sshd

防火墙阻止 SSH 连接

由于防火墙限制,SSH 可以拒绝连接。防火墙保护服务器免受潜在有害连接的影响。但是,如果你在系统上设置了 SSH,则必须配置防火墙以允许 SSH 连接。

确保防火墙不会阻止 SSH 连接,因为这可能会导致“Connection Refused”错误。

解决方案:允许 SSH 连接通过防火墙

SSH Connection Refused解决办法:要解决我们上面提到的问题,你可以使用ufw(简单防火墙),这是用于管理防火墙配置的命令行界面工具。

在终端窗口中键入以下命令以允许 SSH 连接:

sudo ufw allow ssh
如何修复SSH Connection Refused错误?详细指南

SSH 端口已关闭

当你尝试连接到远程服务器时,SSH 会向特定端口发送请求。要接受此请求,服务器需要打开 SSH 端口。

如果端口关闭,服务器将拒绝连接。

默认情况下,SSH 使用端口 22。如果你没有对该端口进行任何配置更改,你可以检查服务器是否正在侦听传入请求。

要列出所有正在侦听的端口,请运行:

sudo lsof -i -n -P | grep LISTEN

在输出中找到端口 22 并检查其STATE是否设置为LISTEN

或者,你可以检查特定端口是否打开,在本例中为端口 22:

sudo lsof -i:22
如何修复SSH Connection Refused错误?详细指南

解决方案:打开SSH端口

解决SSH Connection Refused错误:要启用端口 22 以侦听请求,请使用以下iptables命令:

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

你还可以通过更改防火墙设置通过 GUI 打开端口。

SSH 调试和日志记录

如何修复SSH Connection Refused错误?分析Linux下的SSH问题,可以开启verbose modedebugging mode。当你启用此模式时,SSH 会打印出调试消息,这些消息有助于解决连接、配置和身份验证问题。

详细程度分为三个级别:

  • 级别 1 ( -v)
  • 级别 2 ( -vv)
  • 级别 3 ( -vvv)

因此,不是使用语法访问远程服务器,而是ssh [server_ip]添加-v选项并运行:

ssh -v [server_ip]
如何修复SSH Connection Refused错误?详细指南

或者,你可以使用:

ssh -vv [server_ip]

或者

ssh -vvv [server_ip]

SSH Connection Refused解决办法结论

如何修复SSH Connection Refused错误?本文列出了 SSH Connection Refused错误的一些最常见原因。要解决此问题,请查看列表并确保所有设置均已正确配置。

你可能会遇到的另一个常见问题是 SSH Failed Permission Denied。在我们关于如何修复SSH Failed Permission Denied (Publickey,Gssapi-Keyex,Gssapi-With-Mic) 的文章中了解此错误的原因以及如何修复它。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: