前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务器无法登录?教你如何解决 SSH Failed Permission Denied

服务器无法登录?教你如何解决 SSH Failed Permission Denied

作者头像
章鱼猫先生
发布2021-10-28 09:31:31
31K0
发布2021-10-28 09:31:31
举报
文章被收录于专栏:BioIT爱好者

在 SSH 服务器上修改了与权限相关的设置之后,会出现 SSH 权限拒绝错误(SSH Permission denied error)。通常的场景包括安装新的软件包或创建新用户。

在本教程中,您将学习如何排除 SSH Permission denied 错误并重新连接到 SSH 服务器。

前提条件

  • 以本地计算机作为 SSH Client 客户机和远程系统作为 SSH server 服务器。
  • 通过一个用户账号对远程服务器进行访问(用于基于密码的登录)。
  • 需要一个具有 sudo 或 root 特权的用户帐户(用于修改 SSH 相关配置)。

SSH 权限拒绝

当尝试通过 SSH 进入服务器时,会出现 SSH 权限拒绝错误:

代码语言:javascript
复制
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

在 Permission denied 语句之后,括号里面包含了在连接启动时失败时尝试的身份验证方法。这个错误表明公钥才是问题所在,这其实是一种误导。

出现该错误的一个原因可能是与 sshd_config 的配置有关,这个文件包含了 SSH 服务器的配置。另一种可能性是授权的 authorized_keys 文件没有足够的权限,这个文件包含了允许从 client 客户机 SSH 到远程服务器的公钥列表。因此,当系统无法正常读取文件就会导致“权限拒绝”错误。

修复 SSH Permission denied

两个解决方案都包含需要在服务器端执行的步骤。首先打开服务器上的终端,然后执行下面的解决方案之一。

解决方案1:启用密码身份验证

如果您想使用密码访问 SSH 服务器,修复 Permission denied 错误的解决方案是在 sshd_config 文件中启用密码登录。

要做到这一点,在文本编辑器中打开文件:

代码语言:javascript
复制
sudo nano /etc/ssh/sshd_config
  • 在文件中,找到 PasswordAuthentication 行,并确保它以 yes 结尾。
  • 在文件中,找到 ChallengeResponseAuthentication 选项,并通过添加 no 来禁用它。
  • 如果行被注释掉了,删除散列符号 # 以取消注释。

保存文件并退出。

最后,通过输入以下命令重新启动 SSH 服务:

代码语言:javascript
复制
sudo systemctl restart sshd

解决方案2:更改文件系统权限

出于安全考虑,不推荐使用基于密码的登录作为 SSH 身份验证方法。因此,下面的解决方案可能是可取的,因为它解决了公共密钥认证的方法。

首先,使用文本编辑器打开 sshd_config 文件:

代码语言:javascript
复制
sudo nano /etc/ssh/sshd_config

在文件中,确保下列选项设置如下:

代码语言:javascript
复制
PermitRootLogin no
PubkeyAuthentication yes

注意: 以上步骤被认为是最佳安全实践。如果需要使用 root 登录,请将相关行设置为 yes

注释掉与 gssapi 相关的选项,在行首添加 # 符号:

代码语言:javascript
复制
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no

另外,确保 UsePAM 行设置为 yes:

代码语言:javascript
复制
UsePAM yes

保存文件并重新启动 sshd 服务:

代码语言:javascript
复制
systemctl restart sshd

接下来,导航到你的主文件夹并检查权限:

代码语言:javascript
复制
ls -ld

如果您的所有者权限没有设置为读、写和执行(drwx------) ,请使用 chmod 命令更改它们:

代码语言:javascript
复制
chmod 0700 /home/[your-username]

现在进入 .ssh 文件夹,并重新检查该目录的权限:

代码语言:javascript
复制
ls -ld

这个目录还应该具有文件所有者的读、写和执行权限,如果没有,请使用 chmod 命令更改它们:

代码语言:javascript
复制
chmod 0700 /home/your_home/.ssh

接着,再来检查 .ssh 文件夹包含授权的 authorized_keys 文件的权限:

代码语言:javascript
复制
ls –ld authorized_keys

文件所有者应该具有该 authorized_keys 文件的读写权限。如果没有,请使用下面的方法修改:

代码语言:javascript
复制
chmod 0600 /home/[username]/.ssh/authorized_keys

现在再次尝试使用密钥对登录。下面的输出显示了一次成功的登录尝试。

注意:有关 Linux 文件权限的详细信息,请阅读 Linux 文件权限教程。

总结

本教程介绍了解决 SSH Permission denied (publikey, gssapi-keyex, gssapi-with-mic) 错误所需的步骤。通过完成指南中的步骤,您应该可以修复错误并成功地通过 SSH 连接到服务器。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BioIT爱好者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提条件
  • SSH 权限拒绝
  • 修复 SSH Permission denied
    • 解决方案1:启用密码身份验证
      • 解决方案2:更改文件系统权限
      • 总结
      相关产品与服务
      多因子身份认证
      多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档