免密登录原理

免密登录原理

​ 在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命令进行认证文件的拷贝操作。

原文地址:https://www.cnblogs.com/vvlj/p/13569096.html