如何修复 SSH 连接被拒绝错误?
简介
SSH 是一种加密网络协议,广泛用于安全数据通信、远程 Shell 服务或计算机的命令行界面访问。SSH 取代了较旧且安全性较低的 Telnet 协议,成为远程 Shell 访问的首选方法。
SSH 提供强大的加密和身份验证功能,可在互联网等不安全网络上进行通信时确保数据的机密性、完整性和真实性。对于需要远程安全管理或访问计算资源的系统管理员、开发人员、网络工程师和爱好者来说,SSH 已成为必不可少的工具。
可怕的 SSH 连接被拒绝错误
尝试与远程计算机建立 SSH 连接时经常遇到错误。最令人沮丧的错误之一是"连接被拒绝",当您的客户端由于各种原因无法连接到服务器时,就会发生这种情况。
该错误消息表示您的客户端能够与服务器通信,但无法在指定端口(通常为 22)上建立连接。连接被拒绝错误可能表明您的客户端软件配置存在问题,也可能表明服务器端存在问题,例如防火墙设置阻止了传入流量或登录凭据不正确。
SSH 连接被拒绝错误的常见原因
防火墙设置阻止了连接
出现"SSH 连接被拒绝"错误的最常见原因之一是防火墙设置。防火墙旨在根据特定规则阻止或允许传入和传出的网络流量。如果防火墙配置不当,可能会阻止传入的 SSH 连接,从而导致"连接被拒绝"错误消息。
要检查此错误是否由防火墙导致,您必须确保防火墙允许通过端口 22(SSH 的默认端口)传入的连接。此外,您可能需要在防火墙配置设置中添加例外,以允许来自特定 IP 地址的 SSH 连接。
登录凭据或权限不正确
导致此错误消息的另一个常见原因是服务器的登录凭据不正确或权限不正确。如果在身份验证检查期间输入了错误的用户名或密码,服务器可能会拒绝访问。此外,如果您的远程服务器帐户上的用户权限配置不正确,那么您在尝试通过 SSH 连接时可能会遇到问题。
服务器上的 SSH 服务未运行
您可以通过登录远程系统并在终端窗口中输入"systemctl status sshd"命令来检查 sshd 是否正在运行。如果状态显示不活动(死亡),则使用"systemctl start sshd"命令启动进程,否则其他问题需要进一步排除故障。
systemctl status sshd
检查防火墙设置
SSH 连接被拒绝错误的最常见原因之一是防火墙阻止了连接。要解决此问题,您首先应检查本地计算机和尝试连接的服务器上是否启用了防火墙。
如果防火墙已启用,则很可能是它阻止了传入连接并导致 SSH 连接被拒绝错误。如果没有防火墙或防火墙已禁用,则应检查端口 22(SSH 的默认端口)是否已打开。
如果端口已关闭,则会阻止传入连接建立。您可以使用端口扫描工具(例如 nmap)检查端口 22 是打开还是关闭。
验证登录凭据和权限
如果您的防火墙设置没有问题,但仍然无法建立 SSH 连接,则可能是由于登录凭据或权限不正确。首先,请仔细检查您的用户名和密码信息,并在两个字段中准确重新输入。
此外,还需要验证您的帐户是否有权访问该计算机上的 SSH。您可能还需要在连接的两端都拥有管理员权限 - 如果不确定权限是否已正确授予,请联系连接两端的管理员。
重启 SSH 服务
另一个故障排除步骤是重启 SSH 服务。这有助于解决任何可能导致服务无法正常运行的问题。
重启过程可能因操作系统而异,但通常涉及在服务器上停止和启动服务。您通常可以通过 systemctl 或 service 等命令行工具执行此操作。
重启后,检查服务状态和日志,查找最初可能导致问题的任何错误。这些日志通常可以提供额外的诊断信息,帮助您查明连接问题。
高级故障排除技术
使用备用端口进行 SSH 连接
虽然 SSH 服务通常在端口 22 上运行,但您可以将默认端口更改为其他端口号。当端口 22 被防火墙或其他网络限制阻止时,此功能非常有用。但是,更改端口需要更新服务器端和客户端的配置文件。
要更改默认端口,您必须首先访问位于"/etc/ssh/sshd_config"的服务器配置文件。在此文件中找到"Port"行并将其更新为所需的端口号。
保存并重新启动 SSH 服务,对于基于 Linux 的系统,请使用"sudo systemctl restart sshd.service";对于基于 macOS 的系统,请使用"sudo service sshd restart"。对服务器端配置文件进行这些更改后,请更新客户端配置以反映这些更改。
sudo systemctl restart sshd.service sudo service sshd restart
需要注意的是,使用非标准端口虽然可以通过隐蔽性提供一定程度的安全性,但绝不能将其作为唯一的安全保障方法。攻击者仍然可以扫描开放端口,并且如果您的备用 SSH 端口没有通过其他方式得到妥善保护,最终可能会找到它。
生成用于身份验证的新密钥
SSH 密钥用于连接到 SSH 服务器时的身份验证。这些密钥成对出现:一个私钥存储在您的本地计算机上,另一个公钥存储在您想要连接的远程服务器上。
如果任何一个密钥被盗用,务必尽快生成新密钥。生成新密钥的过程包括创建新的密钥对,并使用相应的密钥更新两端。
在 Linux 系统上,可以通过在终端中运行"ssh-keygen"来完成此操作。按照提示操作,询问您将新的密钥对存储在何处,以及是否要将密码与私钥关联。
ssh-keygen
生成新的密钥对后,将新的公钥上传到服务器的"authorized_keys"文件(位于"~/.ssh/authorized_keys")。然后,更新客户端配置文件以包含新的私钥。
可以通过添加以下行来完成此操作:`IdentityFile /path/to/new/private/key`。通过生成一组新的 SSH 密钥并在连接的两端更新它们,您可以确保未经授权的人员无法通过旧密钥访问您的服务器。
结论
在本指南中,我们探讨了 SSH 连接被拒绝错误、其常见原因以及如何在您的服务器上进行故障排除。我们概述了导致该错误的最常见原因,包括防火墙设置阻止连接、登录凭据或权限不正确以及服务器上未运行 SSH 服务。
我们还提供了针对每个问题的详细故障排除步骤。要修复防火墙问题,可以检查是否已启用防火墙,打开端口 22(SSH 的默认端口),并添加例外以允许传入连接。
为了验证登录凭据和权限,用户应验证其用户名和密码是否正确,并检查服务器上的用户权限。重新启动 SSH 服务可以帮助解决 SSH 连接被拒绝错误。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

