一、ssh免密登陆实现
1.原理简单描述:
机器A若要免密登陆机器B,则需要在机器A上生成一个公钥(id_rsa.pub)和一个私钥(id_rsa),并将公钥添加到机器B的权限列表(authorized_keys)中。这样,在机器A上通过ssh就可以免密登陆机器B了。
2.依次执行命令:
a).首先分别在机器A和B上,以root用户登陆,执行命令:
# ssh-keygen -t rsa
注:1).文件夹“.ssh/”可选择生成的目录,默认生成在/root/下,若是root以外的用户user,则默认生成在/home/user/下;
2).”.ssh/“文件夹下有两个文件,即本机公钥(id_rsa.pub)和私钥(id_rsa);
3).最后生成的图形是公钥的指纹加密;
4).在机器B上生成密钥,是为了生成".ssh/"文件目录,而它的密钥暂时不用;
b).将机器A(root用户)的公钥备份一份并重命名为"id_rsa_A.pub"(避免与机器B的"id_rsa.pub"文件重名),
并发送到机器B的".ssh/"目录下:
# cd ~/.ssh/
# ll
# cp id_rsa.pub id_rsa_A.pub
# ll
# scp id_rsa_A.pub root@remoteIP:~/.ssh/
注:1)."root@remoteIP"是指机器B的IP上的用户root;
2)."~"或者"~/"代表当前登陆用户目录,如:"/home/user/";
c).在机器B上,以root用户登陆,将收到的公钥"id_rsa_A.pub"添加到权限列表"authorized_keys"中:
# cd ~/.ssh/
# ll
# cat id_rsa_A.pub >> authorized_keys
d).在机器B上(root用户),更改".ssh"目录权限为700,"authorized_keys"文件权限为644
# chmod 700 ~/.ssh
# chmod 644 ~/.ssh/authorized_keys
注:1).700 和 644 代表权限
2). "r"代表"4" "w"代表"2" "x"代表"1",然后基于此,三者组合;
如:"7"代表"4+2+1",即"rwx"; "0"代表"",即"---";"6"代表"4+2",即"rw-"; "4"代表"4",即"r--"
故:"700"表示"rwx------";"644"表示"rw-r--r--";
3). 三位数每一位分别表示:文件所有者的权限、文件所有者所在用户组的其他用户的权限、其他用户的权限。
参考(Linux文件保护机制)
e).登陆机器A(root用户),验证免密登陆:
# ssh root@remoteIP
注:1).如果没有提示输入密码,则表示免密登陆成功;
二、扩展
1.同一机器下不同用户的免密登陆设置:
a).原理相同;
b).例如:Linux下的两个用户 root 和 hadoop,此时,只需将"/root/.ssh/id_rsa.pub"(root的公钥)发送至 "/home/hadoop/.ssh/"下,依据上节步骤,可实现 "ssh hadoop@master" (当前机器主机名为master)
2.Hadoop伪分布模式的ssh免密登陆实现:
a).由于伪分布的主节点与从节点位于同一机器上,即只有一个master结点,没有slave1、slave2...等结点;
b).由于以root用户启动Hadoop时需要不断输入"root@master"的登陆密码,并且是同一用户,可在"/root/.ssh/"下直接将公钥"id-rsa.pub"添加到当前目录的"/root/.ssh/authorized_keys"列表中,即可实现"ssh master"免密登陆;
c).经验证,若以hadoop用户启动Hadoop时,需要不断输入"hadoop@master"的登陆密码,可相同处理。
3.Hadoop完全分布模式的ssh免密登陆实现:
参看一台物理机(笔记本)上的两台虚拟机实现的完全分布模式笔记:Hadoop部署笔记(完全分布式)
三、参考博文
1.【linux】/home/USR/.ssh目录里什么时候需要添加authorized_keys文件