Linux SSH 免密码 Key 登录时提示“所选的用户密钥未在远程主机上注册”问题

小助手读文章 00:00 / 00:00

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

服务器已经配置了密钥(Key)登录,但是客户端(Xshell 等)登录总是提示 “所选的用户密钥未在远程主机上注册”,排查发现 Azure CentOS7 模板的 SSH 配置居然跟其他系统不一样,怪不得别的没问题,偏偏 Azure 服务器登录不了!

SSH 配置文件 /etc/ssh/sshd_config 中有这么一行

# AuthorizedKeysFile      .ssh/authorized_key

如果启用 Key 登录,我们一般都是直接删除这一行前面的 #,然而非常容易忽视的是,其他系统的文件一般都是 .ssh/authorized_keys 而这里却是 .ssh/authorized_key!!如果直接从其他系统把文件拷过来,客户端是肯定无法 Key 登录的。

其他会引起 “所选的用户密钥未在远程主机上注册” 或 “服务器拒绝了用户密钥” 问题的原因还有:

  • 文件权限:chmod 700 .sshchmod 600 .ssh/authorized_keys,以及 authorized_keys 归属用户组(如 chown ubuntu:ubuntu .ssh/uthorized_keys
  • 密钥错误:服务器上的 authorized_keys 保存的应是公钥(rsa_id.pub),而不是私钥(rsa_id);
  • 未开启密钥验证:/etc/ssh/sshd_config 文件中应有 PubkeyAuthentication yes 这一行,且没有被注释;
  • 用户名密钥不匹配:如密钥是放在 /home/debian/.ssh/ 下(即用户是 debian),登录的用户名却是 ubuntu
  • 用户名被禁用:如 /etc/ssh/sshd_config 配置了 PermitRootLogin no,却用 root 账户登录;
  • 启用了 SELinux:使用 getenforce 查看,显示的至少要是 Permissive,如果是 Enforcing 也是不行的。临时关闭:setenforce 0;永久关闭:编辑 /etc/sysconfig/selinux,其中的 SELINUX=enforcing 替换为 SELINUX=disabled

确认这几个问题后基本上都可以解决 “所选的用户密钥未在远程主机上注册” 问题了。


参考文章:

1、《SELinux 引起的ssh公钥认证失败问题


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 linuxsshxshell解决方案key 的文章

 本文最后更新于 2024/04/19 14:19:32,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 经验 > Linux SSH 免密码 Key 登录时提示“所选的用户密钥未在远程主机上注册”问题

精选评论

  1. 上清
    上清 回复

    Windows 10Chrome 72.0.3626.119来自 福建 的大神

    牛逼,这也行 icon_razz.gif

    1. 欧文斯

      其实很多都是细心的问题