zoukankan      html  css  js  c++  java
  • ssh密钥登录失败(转)

    https://www.chenyudong.com/archives/ssh-public-key-authentication-refused.html

    搞一个ssh的密钥登录,结果发现就是无法使用密钥登录,非让我输入密码。苦恼。

    输入ssh连接代码

    ssh -i private.key -v user@host.com -p22
    

    从连接的信息中看不出有什么问题。

    debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
    debug1: Next authentication method: publickey
    debug1: Offering public key: private.key
    debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
    debug1: Next authentication method: password
    

    已经提示说了,使用公钥登录,并且提供了私钥,但是还是提示让我输入密码。

    但是我使用另外一个帐号去登录,发现是ok的,可以登录成功。我把成功的那个authorized_keys复制到我的那个用户名下,发现还是不能登录。但是验证了服务器的sshd功能是正常运行的,否则另外一个账户就没办法登录了。我觉得两个用户名的所在的环境应该是相同了,但是确实无法登录。

    想到了客户端这里的连接没有更多有效的信息,那就想到了去服务器上看看相关的信息。vim /var/log/secure查看一下日志。发现有这么一段话:

    Authentication refused: bad ownership or modes for directory /home/user/.ssh
    

    上网搜了一下这个问题,发现原来是.ssh的目录权限不对,设置一下正确的权限:

    chmod 700 ~/.ssh
    

    在此过程中还学习到了一个sshd的测试模式。

     /usr/sbin/sshd -p 10022 -d
          -d     以调试模式运行。服务器将在前台运行并发送非常详细的调试日志信息,
                 服务器将只允许接入一个连接,并且不派生出子进程。仅用于调试目的。
                 使用多个 -d 选项可以输出更详细的调试信息(最多3个)。
    

    会开启一个sshd的调试模式,新建一个10022端口,在客户端连接这个端口的时候,服务器端会有debug日志输出在屏幕上,这个时候就可以查看详细的信息。然后再针对信息进行解决。

    总结

    服务器用户对于ssh目录权限有一些权限要求,权限不对的话ssh无法工作,建议以下权限作为最小的权限。

    chmod 700 .ssh          # chmod 755 .ssh 也是可以的
    chmod 600 .ssh/authorized_keys
    chmod 400 .ssh/private.key  #把密钥的权限也设置为最小
    

    终于又可以愉快的编程了。

  • 相关阅读:
    Django DRF 分页
    django DRF理解
    Docker使用
    基于Django+FastDFS文件管理系统搭建
    django+centos+mariadb读写分离完美实现(上)-mysql主从备份实现
    Python协程理解——基于爬虫举例
    基于Python的大数据的分页模型代码
    NOIP模拟——矩阵分组
    NOIP模拟——聚会
    NOIP模拟——卡牌游戏
  • 原文地址:https://www.cnblogs.com/zhidian2020/p/15213811.html
Copyright © 2011-2022 走看看