如何修复错误权限被拒绝(Publickey)
已发表: 2024-01-10- 为什么它很重要
- 安全计算机连接的基础知识
- 锁的钥匙:公钥
- 为什么会出现这个错误?
- 如何修复它
- 如果仍然不起作用的额外提示
- 保持平稳运行
- 常见问题解答
- 其他资源
- 包起来
您在使用计算机时是否遇到过“错误:权限被拒绝(公共密钥)”消息? 这是一个常见错误,通常在 SSH 连接期间弹出,这是计算机安全地相互通信的一种方式。
可以将其视为尝试使用不适合锁的钥匙。 当您看到此错误时,这意味着您的计算机在与另一台计算机建立安全链接时遇到问题,因为安全设置中的某些内容不匹配。
为什么它很重要
安全连接(例如使用 SSH 建立的连接)就像在嘈杂的房间中进行私人对话。 您不希望每个人都无意中听到,尤其是当您分享秘密或个人信息时,对吧? 这就是为什么修复这个错误如此重要。
它可以保证您的计算机对话的私密性和安全性,确保密码等敏感信息的机密性。
安全计算机连接的基础知识
让我们深入了解一下 SSH 是什么。
SSH 代表 Secure Shell,它是计算机通过互联网以超级安全的方式相互通信的一种特殊方式。 将 SSH 想象成连接两台计算机的特殊私有隧道。
只有这两台计算机才能通过此隧道向对方发送消息,从而确保他们的对话不被窃听。
锁的钥匙:公钥
为了确保该隧道的安全,SSH 使用了一种称为“公钥身份验证”的技术。 这就像拥有一个特殊的密码,但以密钥的形式存在。 您的计算机有一个与其他计算机共享的唯一密钥(称为公钥)。
把它想象成一次秘密握手。 如果握手不匹配,连接将不会发生,此时您会看到“错误:权限被拒绝(公共密钥)”消息。
为什么会出现这个错误?
那么,为什么会看到这个错误呢? 有几个常见原因:
- 关键问题:有时,错误发生是因为您的特殊密钥设置有问题。 也许您计算机上的密钥与您尝试通话的计算机上的密钥不匹配。 这就像试图将方钉装入圆孔中一样——根本行不通。
- 错误的设置:有时,您计算机上的设置或权限可能设置不正确。 这可能会阻止您的计算机正确使用钥匙,例如拥有正确的钥匙但无法将其插入锁中。
如何修复它
现在您已经了解了发生此错误的原因,接下来我们来谈谈如何修复它。 您可以遵循以下一些步骤:
验证 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以启用详细模式,提供详细的连接诊断。
检查服务器的配置是否正确,尤其是PasswordAuthentication
和PubkeyAuthentication
。
猫等/ssh/sshd_config
附加解决方案:
仔细检查您使用的 SSH 连接用户名是否正确。
重新启动 SSH 服务以刷新连接。
sudo systemctl restart sshd
验证 SSH 配置文件中的 SSH 连接端口。 默认值通常为 22,但可能已更改。
检查服务器日志(例如 /var/log/auth.log 或 /var/log/secure)以获取错误详细信息。
如果仍然不起作用的额外提示
如果您已尝试这些步骤但仍然看到错误,还可以尝试以下几个操作:
- 对话模式:在 SSH 中打开详细模式。 这就像要求您的计算机为您提供有关出现问题的更多线索。 您可以通过将
-vvv
添加到 SSH 命令来实现此目的,例如ssh -vvv [email protected]
。 当您尝试连接时,它将为您提供有关所发生情况的更多详细信息。 - 代理问题:有时,问题可能出在 SSH 代理(一种保存密钥的工具)上。 如果代理无法正常工作,您的密钥将无法正确显示。 重新启动 SSH 代理有时会有所帮助。
保持平稳运行
为了避免将来遇到此错误,以下是一些保持一切正常运行的提示:
- 密钥护理:像对待房屋钥匙一样对待您的 SSH 密钥。 确保它们的安全,不要与他人分享。 定期检查它们是否仍在正常工作。
- 定期检查:就像您定期检查您的汽车或房屋是否有任何问题一样,对您的 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_config
或ssh_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 密钥的设置或使用方式出现问题。 通过按照我们概述的步骤操作,您应该能够解决问题并重新与其他计算机进行安全对话。
Ludjon 是 Codeless 的联合创始人,对技术和网络充满热情。 Ludjon 在构建网站和开发广泛使用的 WordPress 主题方面拥有十多年的经验,已成为该领域的资深专家。