免密登录原理
免密登录原理
在linux中进行各个系统之间进行ssh通信时,必须知道对方的账户密码,才能进行相应的操作。通过rsa加密技术,可以实现免密登录。其通信流程如下图所示:
ssh安装
sudo yum install -y openssh-server
集群免密登录
-
只要服务器B有服务器A的公钥,服务器A则可免密登录服务器B。(注意服务器B本机配置了免密登录)
-
集群任意两台机器免密登录的方法
- 通过RSA加密算生成了密钥(包括私钥和公钥)。把公钥追加到用来认证授权的key中去,配置本地免密登录。每台机器都需要!!!
- 将其余每台机器生成的~/.ssh/id_dsa.pub公钥内容追加到其中一台主机的authorized_keys中。
- 将这台机器中包括每台机器公钥的authorized_keys文件发送到集群中所有的服务器。(这样集群中每台服务器都拥有所有服务器的公钥,这样集群间任意两台机器都可以实现免密登录了。)
本机免密配置
需要先设置本机免密登录
cd ~
ll -a # 查看是否存在.ssh/
ssh localhost # 若不存在.ssh/,则执行该语句
cd ~/.ssh
ssh-keygen -t rsa # 1. 使用rsa加密方式生成密钥对; 生成的文件有id_rsa;id_rsa.pub
cat ./id_rsa.pub >> authorized_keys # 2. 公钥加入到authorized_keys
ssh localhost # 测试,免密即成功
- Error:设置了authorized_keys却仍然需要密码
# SSH不希望用户目录、~/.ssh目录、authorized_keys 对组有写权限
chmod g-w /home/hadoop # 如果是root,则为 /root
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
群组免密配置
scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
接着在 Slave1 节点上,将 ssh 公匙加入授权:
ssh localhost ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就可以删掉了
这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在 Master 节点上执行如下命令进行检验,如下图所示:
ssh Slave1
除了上面这种方式,还可以利用scp-copy-id命令进行认证文件的拷贝操作。