配置A登录A
以下操作普通用户
1、准备
# 进入到家目录
cd
# 查看是否有.ssh这个目录
ll -al
# 如果没有ssh登录过其它主机,则就没有.ssh这个目录,执行以下命令生成.ssh目录。若有,步骤2、
ssh ip [如hadoop102,hadoop102是ip地址],然后输入yes->密码
2、然后进入.ssh目录
cd .ssh
ll -al
3、生成公私钥匙
ssh-keygen -t rsa
# 连续敲3次回车后会有以下内容
-rw-------. 1 ubuntu ubuntu 1675 2月 21 15:31 id_rsa # 自己的私钥
-rw-r--r--. 1 ubuntu ubuntu 397 2月 21 15:31 id_rsa.pub # 自己的公钥
4、执行以下操作
ssh-copy-id [hadoop102] # 将自己的公钥拷贝给自己
# 输入yes
# 输入密码
5、自己登录自己不需要密码了
ssh [hadoop102]
6、对.ssh目录下的所有内容做出解释
-rw-------. 1 ubuntu ubuntu 1152 2月 21 15:36 authorized_keys # 存放其他服务器登录自己,所需的公钥
-rw-------. 1 ubuntu ubuntu 1675 2月 21 15:31 id_rsa # 自己的私钥
-rw-r--r--. 1 ubuntu ubuntu 397 2月 21 15:31 id_rsa.pub # 自己的公钥
-rw-r--r--. 1 ubuntu ubuntu 177 2月 21 15:25 known_hosts # 存放登陆过其他服务器的记录
7、原理解释
假设A登录B
- B必须要有A的公钥,authorized_keys中存放着A的公钥
- A登录B时,会携带私钥
- B找到A的公钥后,B拿着A的公钥解密,A登录时发过来的私钥
- B解密后会生成相应公钥并返回给A
- A再拿自己的私钥解密B返回给自己的公钥
- 都匹配,则登录成功
8、3台机器间的免密登录
若有三台机器,hadoop102、hadoop103、hadoop104,它们之间需要配置免密登录
1)在hadoop102上,分别ssh-copy-id hadoop102、hadoop103、hadoop104
2)在hadoop103上,分别ssh-copy-id hadoop103、hadoop102、hadoop104
2)在hadoop104上,分别ssh-copy-id hadoop104、hadoop102、hadoop103