23
2024
08
11:22:59

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

服务器已经配置了密钥(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

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




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/7755.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: