SSH 远程免密登录(公钥登录)

应用场景

  • 避免每次连接开发机都输入密码,在企业中也常常限制密码登录的方式,需要每次走公司的鉴权流程;
  • 授权他人登录时,利用 ssh 公钥授权,不需要把用户名和密码暴露给他人。

原理

密码登录

概览图

  • 远程主机收到客户端请求后会把自己的公钥发送给客户端
  • 客户端通过公钥加密之后将密码发送给远程主机
  • 远程主机用私钥解密,密码如果正确则登录成功

公钥登录

概览图

  • 配置流程
    • 客户端生成密钥对
    • 将自己的公钥存储到远程主机的 ~/.ssh/authorized_keys
  • 登录流程
    • 客户端发起登录时,远程主机会发送一段随机字符串给客户端
    • 客户端用自己的私钥加密后重新发回远程主机
    • 远程主机用存储的客户端公钥解密
    • 对比解密后的字符串和之前发送给客户端的字符串,相同的话则认为登录成功

流程详解

配置流程

  • 客户端生成密钥对
    # 执行完如下命令,一直回车,便会生成两个文件:id_rsa 存储私钥,id_rsa.pub 存储公钥
    ssh-keygen -t rsa
    
  • 远程主机配置
    • 编辑文件 /etc/ssh/sshd_config
      # 启用RSA认证
      RSAAuthentication yes
      # 启用公钥认证
      PubkeyAuthentication yes
      # 公钥认证文件
      AuthorizedKeysFile .ssh/authorized_keys
      
    • 客户端生成的公钥追加到 ~/.ssh/authorized_keys

登录流程

ssh user@ip
posted @ 2023-01-18 15:59  zhouweixin  阅读(220)  评论(0编辑  收藏  举报