概要
服务器免密登录实际上是基于公钥的认证,比如希望A服务器可以免密访问B服务器,则需要进行如下步骤
- A服务器生成密钥对
- 将A服务器生成的公钥分发到B服务器(写入~/.ssh/authorized_keys)
- A服务器即可免密登录B服务器
生成密钥对
使用ssh-keygen命令在客户端机器上创建密钥对
-t 代表指定密钥类型,密钥的类型有两种,一种是RSA,一种是DSA,默认rsa
也即命令可以不加 -t rsa 参数
命令执行过程中有三次确认,分别是存储位置、密码、确认密码,保持默认即可
ssh-keygen -t rsa
文件说明:
文件 | 说明 |
---|---|
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
known_hosts | ssh访问过的服务器的公钥记录 |
authorized_keys | 授权过的登录该服务器公钥 |
分发公钥
分发密钥有两种方式:
ssh-copy-id
客户端服务器上使用ssh-copy-id将公钥分发到目标服务器上
当目标服务器ssh非22默认端口时,应通过-p参数指定端口
分发公钥时需要验证目标服务器的密码
ssh-copy-id -p 50022 centos7-hadoop-131
效果:
直接复制
复制客户端服务器的公钥到目标服务器对应用户目录下的.ssh文件夹下的authorized_keys文件(即~/.ssh/authorized_keys 文件)
此种方式需要注意.ssh文件夹和authorized_keys 文件的权限设置
.ssh 的权限需要为700
authorized_keys 的权限需要为600
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
注意事项
- ~/.ssh文件夹即文件权限不宜设置的过大或过小,一般的设置不成功也基本都是这个原因
- 妥善保管私钥,基于私钥可在任意一点(除非设置黑名单)完成免密登录
- 要登陆的目标服务器保管的是公钥,私钥应只存在需要登录的客户机使用。