大家在进行Hadoop完全分布式搭建时经常会碰见ssh免密码登录的问题,在这里我给大家说一下我成功的案例
首先说一下 这里面碰到的公钥和私钥。
(一)公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。实现如下目的:
(1)我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
(2)必须保证是我发送的邮件,不是别人冒充我的。
(二)公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上 密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。
(三)数字证书的原理
数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时 设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使 用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密. 在公开密钥密码体制中,常用的一种是RSA体制。
用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:
(1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;
(2)保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。
其实我个人理解,就是把你主节点master的~/.ssh中的id_rsa.pub(公钥)复制到各个从节点slave中,然后保存在authorized_keys(数字证书)中,然后你就能从从节点slave中访问主节点master了。同理,你把从节点的id_rsa .pub复制到主节点master中的authorized_keys中,你就能从主节点master访问从节点slave了。把自己的公钥放进authorized_keys 中 就能访问自己的。
下面是一些具体的步骤:
1、设置一下主机名 和IP
vi /etc/hosts
2、vi /etc/hostname
3、进去~/.ssh
vi ~/.ssh
执行ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 然后一路空格下去,然后ls就能看见:
执行cat id_rsa .pub >> authorized_keys
然后ls
以上步骤在每个虚拟机都执行一遍,然后进行下面的步骤
在master中执行scp id_rsa.pub slave1的ip:~/.ssh/autuorized_keys
进入slave1中 cat id_rsa.pub >> authorized_keys
查看authorized_keys
vi authorized_keys
设置一下权限 chmod 700 ~/.ssh chmod 600 authorized_keys
有两个不同的公钥。现在你就能从从节点slave1访问主节点master了 执行ssh master(或IP) 就可以进去master的目录中 输入exit就可以退出
另外因为authorized_keys 中具有你自己的公钥,所以 ssh localhost 就可以访问自己。
从 主节点访问从节点 同理
在从节点slave1中 scp id_rsa.pub master的IP:~/.ssh/authorized_keys
进入master cat id_rsa.pub >> authorized_keys
查看authorized_keys
vi authorized_keys
然后设置权限 chmod 700 ~/.ssh chmod 600 authorized_keys
执行ssh slave1(或IP) 即可以进入slave1 的目录下
到这里ssh免密码登录设置就算结束了