SSH 不允许 root 以外的用户使用公钥登录

SSH 不允许 root 以外的用户使用公钥登录

我有一个 Ubuntu 22.04.1 安装,并且正在使用公钥 + 私钥身份验证登录 ssh。

以下是我采取的步骤

  1. 我首先在我的 Mac 上创建了一个密钥对。
  2. 然后我进入服务器并进行编辑/etc/ssh/sshd_config以添加用于 ssh 登录的新端口
  3. 在防火墙(UFW)中打开该端口并关闭默认的 22。
  4. 我确实ssh-copy-id -i /path/to/public/key root@host将公钥复制到了服务器上。
  5. 然后/etc/ssh/sshd_config再次禁止密码验证
  6. 重新启动 sshd 并使用 root 测试连接。连接工作正常。
  7. 我重新启用了密码验证,并通过新端口使用用户名 + 密码与我的一个 sudo 用户(不是 root)一起测试了 ssh。连接工作正常。
  8. 我执行了ssh-copy-id -i /path/to/public/key user@host将公钥复制到该特定用户的 .ssh/authorised_keys 中的服务器上的操作。该过程未返回任何错误,并报告已复制一个密钥。我登录到服务器并仔细检查了 authorised_keys 文件,发现密钥确实在那里。
  9. 然后/etc/ssh/sshd_config再次禁止密码验证
  10. 重新启动 sshd 并测试与用户的连接。这就是我遇到的问题用户无法登录。当我尝试登录时,出现错误:Permission denied (publickey)。当我重新启用密码验证时,我可以正常连接,但仍然没有密钥。只是一个标准的用户名+密码连接。

由于我对 root 用户使用了完全相同的组合,因此密钥对经过了测试。我想禁用 Permitrootlogin,但无法禁用。有什么想法吗?

编辑:我按照@Jos 的建议,使用 root 和 user 进行了详细登录。以下是 2 个结果。我过滤掉了所有敏感信息和密钥、IP 等,并将结果转换为屏幕截图:

使用详细方式进行 Root 调试连接

和用户(连接失败):

用户使用详细调试连接

编辑:@steeldriver 建议执行 namei 来检查 authorized_keys 文件是否过于宽松。以下是输出:

| => namei -l ~/.ssh/authorized_keys
f: /home/spitixorismesiti/.ssh/authorized_keys
drwxr-xr-x root             root             /
drwxr-xr-x root             root             home
drwxrwx--- spitixorismesiti spitixorismesiti spitixorismesiti
drwx------ spitixorismesiti spitixorismesiti .ssh
-rw------- spitixorismesiti spitixorismesiti authorized_keys

相关内容