SSH Permission Denied解决办法介绍
在SSH服务器上修改权限相关设置后,出现SSH Permission denied错误。通常的场景包括新的软件包安装或新用户的创建。
在本教程中,你将学习如何解决或修复SSH Permission denied错误并重新连接到 SSH 服务器。
先决条件
- 本地机器上的 SSH 客户端和远程系统上的 SSH 服务器
- 访问远程服务器的用户帐户(用于基于密码的登录)
- 具有sudo 或 root 权限的用户帐户
什么是导致 SSH Permission denied(publickey、gssapi-keyex、gssapi-with-mic)?
尝试通过 SSH 连接到服务器时出现 SSH 权限被拒绝错误:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
在 Permission denied 语句之后,括号包含在启动连接时失败的尝试身份验证方法。该错误表明公钥是问题,这是误导性的。
错误的原因之一可能是sshd_config
,包含 SSH 服务器配置的文件。另一种可能是authorized_keys
文件权限不足。此文件包含允许通过 SSH 连接到服务器的客户端的公钥列表。因此,系统无法读取文件会导致权限被拒绝错误。
如何解决解决SSH Permission Denied错误?
这两种解决方案都包含你需要在服务器端执行的步骤。首先打开服务器上的终端,然后继续执行以下解决方案之一。
解决方案 1:启用密码验证
SSH Permission Denied解决办法:如果你想使用密码访问SSH服务器,修复SSH Permission denied错误的解决方案是在sshd_config
文件中启用密码登录。
为此,请在文本编辑器中打开该文件。此示例使用 nano 编辑器:
sudo nano /etc/ssh/sshd_config
在文件中,找到该PasswordAuthentication
行并确保它以yes
.
找到该ChallengeResponseAuthentication
选项并通过添加禁用它no
。
如果行被注释掉,请删除井号#
以取消注释。
保存文件并退出。
通过键入以下命令重新启动 SSH 服务:
sudo systemctl restart sshd
解决方案 2:更改文件系统权限
修复SSH Permission Denied错误:出于安全考虑,不建议使用基于密码的登录作为 SSH 身份验证方法。因此,以下解决方案可能更可取,因为它可以排除公钥认证方法的故障。
首先,sshd_config
使用文本编辑器打开文件:
sudo nano /etc/ssh/sshd_config
在文件中,确保以下选项设置如下:
PermitRootLogin no
PubkeyAuthentication yes
注意:上述步骤被视为最佳安全实践。如果你需要使用 root 登录,请将相关行设置为yes
.
如何解决解决SSH Permission Denied错误?通过在行的开头添加井号来注释掉与 GSSAPI 相关的选项:
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no
另外,请确保该UsePAM
行设置为yes
:
UsePAM yes
保存文件并重启 sshd 服务:
systemctl restart sshd
现在导航到你的主文件夹并检查权限:
ls -ld
如果你的所有者权限未设置为读取、写入和执行 ( drwx------
),请使用chmod 命令更改它们:
chmod 0700 /home/[your-username]
现在转到.ssh
文件夹并重新检查权限:
ls -ld
SSH Permission Denied解决办法:此目录还应具有文件所有者的读取、写入和执行权限。要强制执行它们,请chmod
再次使用:
chmod 0700 /home/your_home/.ssh
该.ssh
文件夹包含该authorized_keys
文件。使用以下命令检查其权限:
ls –ld authorized_keys
文件所有者应具有读写权限。要设置它们,请使用:
chmod 0600 /home/[username]/.ssh/authorized_keys
现在尝试再次使用密钥对登录。下面的输出显示了成功的登录尝试。
注意:有关 Linux 文件权限的更多信息,请阅读Linux 文件权限教程。
修复SSH Permission Denied错误结论
本教程介绍了对SSH Permission denied (publickey,gssapi-keyex,gssapi-with-mic)错误进行故障排除所需的步骤。通过完成指南中的步骤,你应该修复错误并成功通过 SSH 连接到你的服务器。