Linux系统多台主机组建Hadoop集群,配置SSH免密登录是前提,也是重中之重,下面我就来细扒一下流程,希望大家看了这篇博客后能提壶灌顶。

  1. 修改主机名(永久): hostnamectl set-hostname hadoop01
    修改DNS: /etc/hosts
    重启: reboot
  2. 创建ssh秘钥并相互拷贝公钥
    ssh-keygen -t rsa -P “” -f ~/.ssh/id_rsa
    cat ~/.ssh/id_*.pub|ssh root@test2 “cat >> .ssh/authorized_keys”
    p.s. 有的机器不支持:ssh-copy-id -i id_rsa.pub centos7允许免密登陆 centos7配置免密登录_IPhost
    提示找不到ssh-copy-id 命令,所以使用上述方法(稳如狗)。
  3. 细节记录
a. 当没有配置好ssh秘钥前:主机A使用ssh连接主机B,会在主机A生成一个known_hosts文件,记录自己接连过的主机B(主机名,IP 指纹),下次就不用确认(yes/no)了,而是直接输入密码;
	此时在A使用B的ip或主机名都可以直接输入密码,不提示输入yes/no;
	而当A自己ssh连接自己时,第一次使用ip时只记录ip单独一行(IP 指纹),需要确认(yes/no)了,然后输入密码;
	  当A自己ssh连接自己时,第一次使用主机名时记录ip和主机名(主机名,IP 指纹),需要确认(yes/no)了,然后输入密码;
	
b. 配置SSH密钥
	ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
	cat ~/.ssh/id_*.pub|ssh root@test2 "cat >> .ssh/authorized_keys"
	当A将密钥拷贝到B时(确认和输密码),会在B生成一个authorized_keys文件(记录A),同时也在A生成一个known_hosts文件(记录B);
	当A将密钥拷贝到A时(确认和输密码),会在A生成一个authorized_keys文件(记录A),同时也在A生成一个known_hosts文件(记录A);
		
c. 当配置好ssh秘钥后:按上述方法两两之间(包括自己)拷贝公钥
	若在A拷贝公钥时使用的是B的IP:root@IP,则在A的known_hosts文件只记录B的IP,
		此时在A使用 ssh B的IP 命令可直接登录到B,首次无需确认和输入密码;而使用 ssh B的主机名 命令时,首次需要确认(yes/no),不用输入密码;
	若在A拷贝公钥时使用的是B的主机名:root@主机名,则在A的known_hosts文件只记录B的IP和主机名,
		此时在A使用 ssh B的IP 命令或者是使用 ssh B的主机名 命令,首次都无需确认和输入密码,直接登录到B;

d. 总结:最好是先配置好主机名和DNS后统一使用主机名来操作,拷贝密钥只需要一次就好,但是要使用ssh命令把主机名和IP都连接一遍,包括自己跟自己;
  1. SSH对应的各目录和文件权限记录