Linux 实现密钥免密登录
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:可以在本地生成一堆公钥(如:id_rsa)、私钥(id_rsa.pub)文件
实现步骤
在用户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
-