ssh原理

ssh原理

密码认证原理

img

  • 服务器生成一对公私钥,

  • 认证流程

    • 客户端发送请求给服务器

    • 服务器生成了一对公私钥,发送公钥给客户端

    • 客户端使用这个公钥进行加密,发送给服务端

    • 服务端通过私钥进行解密,认证成功后,就能连接上去了

免密认证原理

  • 密钥认证,核心原理就是挑战--应答,服务器用一个问题来挑战客户端,只有正确回答问题的客户端才被证明拥有私钥

  • 前提条件

    • 客户端生成一对非对称密钥,公钥和私钥

    • 客户端的公钥需要提前上传到服务器中的authorized_keys文件

    • 客户端的私钥存储在本地上

  • 认证流程

    • 客户端声明一下,我向服务器发送一个请求,使用密钥认证

    • 服务端还有发送一个公钥给客户端,保存到known_hosts文件中,下次连接时,验证一些服务器发来的公钥

    • 客户端收到加密后,用自己的私钥进行解密这段密文,解密后,使用服务端的公钥进行加密发送给服务端

    • 服务端验证,使用自己的私钥进行解密后,是否一致,如果一致,就能够连接上去了

img

  • 如果一个服务器生成了一对公私钥,那么我把这个私钥发送给任何一个服务器,就能免密登录到这个服务器了

  • 所以说要管理好自己的私钥文件,避免泄露

ssh文件详细

  • authorized_keys文件,这个发送别人发送公钥存储的文件

  • id_rsa文件,这个是私钥文件

  • id_rsa.pub 这个是公钥文件

  • kown_hosts 记录曾经连接过过的服务器公钥指纹,第一次连接,需要输入密码,后面再次进行连接,会核对服务器的公钥是否与这里一致,一致才连接,保存服务器发来的公钥,这个主要就是验证服务器的身份

  • root用户登录控制

    • PermitRootLogin 控制root登录

      • yes 允许密码或者密钥登录

      • prohibit-password 禁止使用密码登录,只能使用密钥登录

      • no 完成禁止root远程登录

  • 认证方式的控制

    • PubkeyAuthentication 是否允许密钥认证

      • yes 允许使用公钥认证

      • no 禁止使用公钥认证

    • PermitEmptyPasswords 控制是否允许空密码登录

      • yes 允许空密码登录

      • no 禁止空密码登录

    • PasswordAuthentication 控制是否允许密码认证

      • yes 允许密码登录

      • no 禁止密码登录

  • root用户空密码登录设置

PermitEmptyPasswords yes

passwd -d root # 清除root密码

登陆即可

posted @ 2025-10-26 15:36  乔的港口  阅读(4)  评论(0)    收藏  举报