• SSH 免密登录配置与Permission denied (publickey,gssapi-with-mic,password)问题


    背景

    为了SSH的登录安全,将SSH配置为使用公私钥的方式进行登录

    常规配置

    配置SSH使用公私钥登录来实现免密的方法,减少了每次登录都需要输入复杂密码与登录的安全问题,配置过程如下

    1. 检查/etc/ssh/sshd_conf 的配置
      • PubkeyAuthentication yes # 启用pubkey认证
      • AuthorizedKeysFile .ssh/authorized_keys # 配置用户的认证公钥
      • PasswordAuthentication no # 禁用密码认证
    2. 使用ssh-keygen -t rsa -b 2048 生成密钥对,默认会在/home/{username}/.ssh目录下
      • 生成密钥时建议设置密钥的密码,防止密钥泄漏风险
    3. 密钥与权限配置
      • 将生成的公钥添加到.ssh/authorized_keys
      • 修改.ssh目录权限 chmod 0700 ~/.ssh chown {username}:{groupname} -R ~/.ssh
      • 修改authorized_keys文档权限 chmod 0600 ~/.ssh/authorized_keys
    4. 重启sshd服务使配置生效
    5. copy私钥文档客户端并妥善保存,将客户端的私钥文件权限设置成0600。这时就可以使用ssh username@host -i identityfile命令进行登录。

    通过上面的配置基本就完成了SSH使用公私钥登录的配置。

    问题检查

    客户端登录提示: Permission denied (publickey,gssapi-with-mic)

    • 出现publickey通常是.ssh目录与authorized_keys文件配置的权限问题
    • 出现gssapi-with-mic是因为开启了gssapi功能,可以通过在sshd_config中关闭来解决
      • GSSAPIAuthentication no
      • GSSAPICleanupCredentials no
      • GSSAPIStrictAcceptorCheck no
      • GSSAPIKeyExchange no
    • 出现password是开启了密码登录,但密码认证失败

    当我们关闭了gssapi认证,password认证登录方式,只开启pubkeyAuthentication时会提示:Permission denied (publickey),这里注意对认证的文件名,文件权限做仔细的检查,如果还是提示:Permission denied (publickey),可以通过restorecon -FRvv ~/.ssh命令恢复文件的安全上下文。

    记录这遍文章的重点在于restorecon -FRvv ~/.ssh命令,上面的配置过程在网上也是在大堆,为了方便就在这里再次记录了。我实践时出现上面的问题的过程如下:

    • 服务器配置完成后就配置了公私钥登录,配置过程和上面相同,并没有遇到什么问题。
    • 因为断电导致服务异常关机,重新开机后通过公私钥登录开始提示:Permission denied (publickey,gssapi-with-mic)
    • 通过restorecon -FRvv ~/.ssh命令恢复文件的安全上下文解决问题

    如果在实践中还遇到了需要记录的其它情况可以在通过评论,私信等方式告知我,将持续记录这一问题的解决方案。

  • 相关阅读:
    Spring Boot启动流程
    Java异常处理
    基于Python实现多项式拟合正弦函数
    java-php-python-ssm玉米生产力管理与分析平台计算机毕业设计
    接口自动化测试 —— Jmeter 6种定时器应用
    8.3:加强堆的应用
    opencv入门笔记(一)
    一文带你了解2023年最新央企名单、业务和管理机构(附资料)
    工地木模板多少钱一张?
    weak的自动置空
  • 原文地址:https://blog.csdn.net/tuchangsheng801004/article/details/125495864