AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-1010033

ljcorsa's questions

Martin Hope
ljcorsa
Asked: 2025-04-24 05:50:29 +0800 CST

SSH 密钥对仅在调试模式下被 sshd 接受

  • 14

我使用的是 Rocky 9.4 和 OpenSSH 8.7p1,有一个 RSA 密钥对,但除非sshd 处于调试模式,否则无法使用。(还好我有一对旧的密钥对,还能用)。

我已取消设置 SSH_AUTH_SOCK,并确认没有代理参与。为了避免这种情况,我已移动 ~/.ssh/config 文件。我已确认 ~/.ssh/ 的模式为 0700,id_rsa 和 authorized_keys 的模式为 0400,known_hosts 的模式为 0600。我已确认 authorized_keys 中的公钥正确,并使用“ssh-keygen -l”进行了验证。

当 sshd 作为服务运行时,我运行“ssh -avv -i ~/.ssh/id_rsa localhost”,我看到:

Offering public key:  (with the correct filename and SHA256 fingerprint)
we sent a publickey packet, wait for reply
Authentications that can continue:  publickey, ...
we did not send a packet, disable method
Next authentication method: keyboard-interactive

...并提示我输入常用密码。

/var/log/secure 显示:

Connection from 127.0.0.1 ...
Failed publickey for (user) and shows the same correct SHA256 code.

我发现建议我停止 sshd 服务,并在调试模式下手动运行。我以 root 身份打开了第二个会话并运行:

systemctl stop sshd
/usr/sbin/sshd -D -ddd -e

当我在原始用户窗口中重复“ssh -avv -i ~/.ssh/id_rsa localhost”命令时,我看到:

Offering public key:  (with the correct filename and SHA256 fingerprint)
we sent a publickey packet, wait for reply
Server accepts key:   (with the correct filename and SHA256 fingerprint)
Enter passphrase for key '(filename)':  (I type passphrase)
Authenticated to 127.0.0.1 (via proxy) using "publickey".

...并且我已使用相同的密钥成功登录。

我希望 sshd -D -ddd 能帮助我解决问题,但它很高兴地接受了我的密钥。


更新时间:2024-04-30

采纳@mircea-vutcovici的建议,设置LogLevel: DEBUG在sshd尝试不同的密钥时生成不同的消息序列:失败的尝试包含一条authorized_keys不可读的消息,尽管所有密钥都在同一个文件和同一个sshd实例中!

我的 homedir 是一个 NFS 共享,并且 SELinux 正在强制执行,因此我使用@grawity 的建议 做了一些搜索: ls -LZproducedsystem_u:object_r:nfs_t:s0是一个通用的 SELinux 标签。显然,如果 NFS 挂载先于 SELinux 策略加载,就会出现问题。patchwork :selinux: make labeled NFS work when mount before policy load。这个问题已于 2023 年修复,应该会添加到 Rocky 9.4(2024 年中)。不过,/home它还是通过 NFS 挂载的vers=3,仅供参考。

我最终找到了一个有用的咒语 serverfault:NFS 家庭目录中的 SELinux 标签错误?: setsebool -P use_nfs_home_dirs on。我现在可以使用这两个密钥,但仍然不明白为什么它们会被区别对待,因为两个公钥都在同一个文件中,并且两个私钥在同一个文件夹中具有相同的权限。

刚碰到一个13年前的类似问题:仅当 sshd 为守护进程时,公钥认证才会失败。显然 SELinux 一直是问题所在 :-) 我要感谢 @grawity 的回答,它让我陷入了困境。

ssh
  • 2 个回答
  • 1315 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve