如何修复 Linux 上的“权限被拒绝(公钥)”SSH 错误?如何修复 Linux 上的“权限被拒绝(公钥)”SSH 错误?如何修复 Linux 上的“权限被拒绝(公钥)”SSH 错误?如何修复 Linux 上的“权限被拒绝(公钥)”SSH 错误?
  • 业务
  • 目标
  • 支持
  • 关于
  • 联系我们
  • 登录
✕

如何修复 Linux 上的“权限被拒绝(公钥)”SSH 错误?

发表 admin at 2025年2月28日
类别
未分类
标签

您的 SSH 公钥是否给您带来了困难?尝试这些解决方案之一。

SSH 是连接到远程计算机的有用工具,但您可能会遇到涉及 Linux 上的公钥的“权限被拒绝(公钥)”错误。幸运的是,您可以尝试一些简单的修复方法来排除故障。

什么是公钥?

当您在 Linux 上生成 SSH 密钥对时,您将获得一个公钥和一个私钥。私钥将作为严密保护的秘密保留在您身边,但公钥将被传输到远程服务器,以便您无需密码即可登录。当您连接时,您的本地 SSH 客户端会将公钥与私钥进行匹配。

这种方法的优点是你只需要给出公钥。只要您将私钥保密,就可以确保您的安全,以防您的公钥遭到泄露。公钥本身是没有用的。

OpenSSH 是开源世界中使用最广泛的 SSH 客户端和服务器,要求远程计算机上包含任何公钥的文件(主目录中的“.ssh/authorized_keys”)具有一定的权限。如果为其他用户设置了写入权限,即所谓的“全局可写”,则它将不起作用。由于目录名称以句点 (.) 开头,因此除非您使用命令 ls -A,否则它不会显示在任何 ls 列表中。

如果文件是从另一台计算机复制的或者您自己创建的,则权限可能会发生变化。幸运的是,这个问题很容易解决。

检查您的公钥权限

authorized_keys 文件只是一个纯文本文件,其中包含您希望能够登录到远程计算机上的帐户的客户端的所有公钥。要查看其权限,请使用带 -l 选项的 ls 命令:

ls -l ~/.ssh/authorized_keys

这将显示所有者、组和其他用户的权限设置。请注意字符串中的最后六个字母。如果您在其中看到“w”,则意味着该组或其他人可以对其进行写入,从而使其不安全。

您希望该文件可由您写入,但不能由组或其他人写入。要向正确的用户授予访问权限,您可以使用 chmod 更改权限。

有两种方式:数字方式和符号方式。

数字方式更短,但你必须记住八进制权限数字:

chmod 700 ~/.ssh/authorized_keys

符号化的方法更加助记:

chmod go-w ~/.ssh/authorized_keys

使用 ssh-agent 安全复制密钥

您可以手动将计算机中的任何公钥复制并粘贴到 ~/.ssh/.authorized_keys 文件中,但使用 ssh-agent 程序将减少出现任何权限错误的可能性。

要启动 ssh-agent,请使用以下命令:

eval "$(ssh-agent-s)"

要使用 ssh-agent 登录远程服务器,请在 ssh 中使用 -A 选项

ssh -A user@example.com

检查远程服务器的 sshd 设置

如果这些努力中的任何一个失败,并且您具有 root 访问权限,则可能需要对远程计算机上的 sshd 服务器进行一些配置更改。如果没有,您可能需要与系统管理员联系以帮助您解决任何 SSH 连接问题。这是最后的方法,因为它可能会降低您的系统的安全性。

sshd 的系统范围配置文件是/etc/ssh/sshd_config。因为它由 root 用户拥有,所以您需要使用 sudo 来编辑它。例如,使用 Vim 编辑它:

sudo vim /etc/ssh/sshd_config

要使 sshd 允许您登录(即使您的authorized_keys 文件是全局可写的),请在此文件中将“StrictModes”选项设置为“no”。

保存并重新启动 SSH 服务器:

sudo systemctl restart sshd.service

现在您可以修复 SSH 公钥权限错误

您可能会在远程系统上遇到有关 SSH 公钥的错误。幸运的是,大多数时候您所要做的就是检查并设置文件权限,以便其他人无法看到您的密钥。您还可以使用 ssh-agent 来获得更可靠的连接。作为最后的手段,您可以降低 SSH 服务器的严格程度。

©2015-2025 Norria Group support@norria.com