Hadoop的无密码登录采用SSH的配置方式,ssh为Secure Shell的缩写,有IETF的网络小组制定。SSH是建立在应用层基础之上的安全协议,其为远程登录会话或者其他网络服务提供安全性协议。
传统的网络服务,如ftp和telnet本质上是不安全的,因为他们在网络上采用明文传送口令和数据,容易遭受“中间人”攻击。ssh采用加密的形式进行传输,有效杜绝了中间人攻击。
SSH提供两种形式的网络安全验证:1)基于口令的安全验证。即客户端通过账户和口令远程登录到远程主机,所有的传输数据都会加密。2)基于秘钥的安全验证。使用者需要创建一对秘钥,并把公钥放在需要访问的服务器上。流程是,客户端向服务端发起请求,请求采用你的秘钥进行安全认证。服务器到固定的目录查找你的共有秘钥,然后比对你的公钥和服务器公钥,如果一致,则把内容发送给客户端,客户端采用私钥解密加密数据。
SSH理论上分为三层:SSH-TRANS 负责服务器认证、保密性和安全性验证。二)SSH-USERAUTH负责客户端用户鉴别功能。3)SSH-CONNECT将多个加密隧道分成逻辑多个逻辑通道。
通过以上的讲解,基于秘钥的安全验证较为安全,hadoop即采用此种传输方式,其配置步骤如下:
1)创建公钥密码,类型采用rsa格式,存到~/.ssh/id_rsa文件里
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
2)将公钥合并,并完成分发
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3)更改公钥的模型为读写模式
$ chmod 0600 ~/.ssh/authorized_keys
4)验证完成配置
ssh localhost
如果不用密码直接登录,则配置成功。