如何修复错误权限被拒绝(Publickey)

已发表: 2024-01-10
目录
  • 为什么它很重要
  • 安全计算机连接的基础知识
  • 锁的钥匙:公钥
  • 为什么会出现这个错误?
  • 如何修复它
  • 如果仍然不起作用的额外提示
  • 保持平稳运行
  • 常见问题解答
  • 其他资源
  • 包起来

您在使用计算机时是否遇到过“错误:权限被拒绝(公共密钥)”消息? 这是一个常见错误,通常在 SSH 连接期间弹出,这是计算机安全地相互通信的一种方式。

可以将其视为尝试使用不适合锁的钥匙。 当您看到此错误时,这意味着您的计算机在与另一台计算机建立安全链接时遇到问题,因为安全设置中的某些内容不匹配。

如何修复错误:权限被拒绝(Publickey)

为什么它很重要

安全连接(例如使用 SSH 建立的连接)就像在嘈杂的房间中进行私人对话。 您不希望每个人都无意中听到,尤其是当您分享秘密或个人信息时,对吧? 这就是为什么修复这个错误如此重要。

它可以保证您的计算机对话的私密性和安全性,确保密码等敏感信息的机密性。

安全计算机连接的基础知识

让我们深入了解一下 SSH 是什么。

SSH 代表 Secure Shell,它是计算机通过互联网以超级安全的方式相互通信的一种特殊方式。 将 SSH 想象成连接两台计算机的特殊私有隧道。

只有这两台计算机才能通过此隧道向对方发送消息,从而确保他们的对话不被窃听。

锁的钥匙:公钥

为了确保该隧道的安全,SSH 使用了一种称为“公钥身份验证”的技术。 这就像拥有一个特殊的密码,但以密钥的形式存在。 您的计算机有一个与其他计算机共享的唯一密钥(称为公钥)。

把它想象成一次秘密握手。 如果握手不匹配,连接将不会发生,此时您会看到“错误:权限被拒绝(公共密钥)”消息。

为什么会出现这个错误?

那么,为什么会看到这个错误呢? 有几个常见原因:

  1. 关键问题:有时,错误发生是因为您的特殊密钥设置有问题。 也许您计算机上的密钥与您尝试通话的计算机上的密钥不匹配。 这就像试图将方钉装入圆孔中一样——根本行不通。
  2. 错误的设置:有时,您计算机上的设置或权限可能设置不正确。 这可能会阻止您的计算机正确使用钥匙,例如拥有正确的钥匙但无法将其插入锁中。

如何修复它

现在您已经了解了发生此错误的原因,接下来我们来谈谈如何修复它。 您可以遵循以下一些步骤:

验证 SSH 密钥权限:

为您的私钥设置正确的权限。

 chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/autorized_keys

确保您的公钥位于服务器上的~/.ssh/authorized_keys中。 如果没有,请使用以下命令添加:

猫 ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> ~/.ssh/authorized_keys'。

调试 SSH 连接

运行ssh -vvv user@hostname以启用详细模式,提供详细的连接诊断。

检查服务器的配置是否正确,尤其是PasswordAuthenticationPubkeyAuthentication

猫等/ssh/sshd_config

附加解决方案:

仔细检查您使用的 SSH 连接用户名是否正确。

重新启动 SSH 服务以刷新连接。

 sudo systemctl restart sshd

验证 SSH 配置文件中的 SSH 连接端口。 默认值通常为 22,但可能已更改。

检查 ssh 端口

检查服务器日志(例如 /var/log/auth.log 或 /var/log/secure)以获取错误详细信息。

如果仍然不起作用的额外提示

如果您已尝试这些步骤但仍然看到错误,还可以尝试以下几个操作:

  1. 对话模式:在 SSH 中打开详细模式。 这就像要求您的计算机为您提供有关出现问题的更多线索。 您可以通过将-vvv添加到 SSH 命令来实现此目的,例如ssh -vvv [email protected] 。 当您尝试连接时,它将为您提供有关所发生情况的更多详细信息。
  2. 代理问题:有时,问题可能出在 SSH 代理(一种保存密钥的工具)上。 如果代理无法正常工作,您的密钥将无法正确显示。 重新启动 SSH 代理有时会有所帮助。

保持平稳运行

为了避免将来遇到此错误,以下是一些保持一切正常运行的提示:

  1. 密钥护理:像对待房屋钥匙一样对待您的 SSH 密钥。 确保它们的安全,不要与他人分享。 定期检查它们是否仍在正常工作。
  2. 定期检查:就像您定期检查您的汽车或房屋是否有任何问题一样,对您的 SSH 设置执行同样的操作。 确保设置没有意外更改并且您的密钥是最新的。

常见问题解答

如何在 SSH 中设置公钥身份验证?

要在 SSH 中设置公钥身份验证,请首先使用ssh-keygen等命令在本地计算机上生成 SSH 密钥对。 这将创建一个私钥 ( id_rsa ) 和一个公钥 ( id_rsa.pub )。 接下来,使用ssh-copy-id user@server_ip将公钥复制到服务器的~/.ssh/authorized_keys文件。 确保authorized_keys文件具有正确的权限(通常为600)以确保安全。 此设置使 SSH 能够使用基于密钥的身份验证而不是密码。

“SSH 权限被拒绝(公共密钥)”错误的常见原因有哪些?

  • 导致此错误的常见原因包括:
  • SSH 密钥文件的权限不正确。 私钥应该只能由用户(600)读取。
  • SSH 配置文件( sshd_configssh_config )中的配置错误。
  • 过时的 SSH 客户端或服务器软件可能不支持当前的身份验证协议。
  • 防火墙或安全软件阻止 SSH 端口或连接。
  • authorized_keys文件中设置的公钥不正确,或者使用错误的用户名进行SSH 连接。

如何验证我的 SSH 密钥是否已正确添加到服务器?

要进行验证,请登录服务器并检查~/.ssh/authorized_keys文件。 您的公钥应该列在那里。 您还可以通过尝试通过 SSH 连接到服务器来测试连接。 如果它不要求输入密码,则密钥已正确添加。

为什么限制 SSH 密钥文件的权限很重要?

限制 SSH 密钥文件的权限对于安全至关重要。 如果其他人可以读取您的私钥,他们就有可能访问您的服务器。 保持私钥的安全可确保只有您可以使用它进行身份验证。

服务器 SSH 配置的更改是否会导致“权限被拒绝”错误?

是的,服务器 SSH 配置文件 ( etc/ssh/sshd_config ) 的更改可能会导致此类错误。 例如,如果PubkeyAuthentication设置为no ,服务器将不接受公钥身份验证,从而导致权限被拒绝错误。

如果我的 SSH 客户端已过时,我该怎么办?

如果您的 SSH 客户端已过时,它可能不支持较新的身份验证方法,或者可能存在未修补的安全漏洞。 将 SSH 客户端更新到适用于您的操作系统的最新版本非常重要。

防火墙如何影响 SSH 连接?

如果防火墙配置为限制对 SSH 端口(默认值为 22)的访问,则防火墙可以阻止 SSH 连接。 确保您的防火墙允许用于 SSH 的端口上的流量,以防止连接问题。

其他资源

如何在 Linux 2024 中安装 Sendmail(分步)

DevOps 的基本 Linux 命令(手册)

包起来

在本文中,我们探讨了导致“错误:权限被拒绝(公共密钥)”的原因以及如何修复它。 请记住,此错误就像钥匙与锁不相配 – 它通常意味着您的 SSH 密钥的设置或使用方式出现问题。 通过按照我们概述的步骤操作,您应该能够解决问题并重新与其他计算机进行安全对话。