欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何在 Linux 上实现无密码密钥登录

最编程 2024-08-03 14:43:28
...

SSH介绍

  • ssh可以基于密码进行认证,也可以基于密钥去认证用户,基于密钥认证时可以实现免密码登录的效果
  • 命令:ssh  username@ip,如:ssh root@192.168.6.83

 

场景方案

场景

    • 用户A的机器(如:192.168.6.82),平常使用密码连接到服务器1(192.168.6.83)、使用密码连接服务器2(192.168.6.84)

方案

    • 用户A:可以在本地生成一堆公钥(如:id_rsa)、私钥(id_rsa.pub)文件
      • 在Linux机器上,直接使用ssh-keygen -t rsa来生成公钥、私钥文件
      • 在windows机器上,可安装openssh服务、或通过git,使用ssh-keygen -t rsa来生成公钥、私钥文件
    • 用户A:将私钥自己保留,然后将公钥发送到到服务器1、服务器2,然后分别在服务器的“authorized_keys”文件中加入用户A的公钥(即:xxx_pub )
    • 用户A第一次连接需要输入对应服务器的密码,此后再次通过“ssh”登录其服务器就不需要再输入密码

 

实现步骤

 在用户A机器(如:192.168.6.82)生成公钥、私钥对,并查看

    • ssh-keygen -t  rsa                               # 默认将密钥对生成在"~/.ssh"目录下
    • ssh-keygen -t  rsa -f /opt/id_rsa      # 指定在对应的目录下生成对应名称的密钥对文件

方式一:将生成的公钥拷贝到需要免密远程登录的服务器上

    • 命令:ssh-copy-id root@192.168.6.83
    • 说明: 将公钥拷贝到192.168.6.83服务器上后,会在对应的本机下自动创建"~/.ssh/known_hosts"文件、在对应的服务器下自动创建"~/.ssh/authorized_keys"文件

方式二:直接拷贝公钥内容到认证文件

    • 若其他机器(如:192.168.6.118)已经生成了公钥、私钥文件,也需要直接免密登录服务器1(如:192.168.6.83),可直接将公钥文件内容复制到"~/.ssh/authorized_keys"文件下即可
    • 注意:如果“authorized_keys”文件不存在可以创建,且需要注意该文件的权限登录的用户要有读的权限(如:400【r--------】、600【rw-------】),否则无法登录

  • 在用户A机器直接通过“ssh”远程免密登录校验
    • ssh root@192.168.6.83