如果我们需要远程管理其他机器的话,一般使用远程桌面或者telnet。linxu服务器几乎都是命令行,所以只能使用telnet了。telnet的缺点是通信不加密,非常不安全,只适合于内网访问。为解决这个问题,推出了加密的通信协议,即SSH。SSH的全称是Secure Shell,使用非对称加密方式,传输内容使用rsa或者dsa加密,可以有效避免网络窃听。
hadoop的进程之间通信使用ssh方式,需要每次都要输入密码。为了实现自动化操作,我们下面配置SSH的免密码登录方式。
下面的图展示了SSH免密码登录的机制原理。
利用ssh命令产生一对公钥和私钥。
ssh-keygen -t rsa
解释一下:命令“ssh-keygen -t rsa”表示使用rsa加密方式生成密钥, 回车后,会提示三次输入信息,我们直接回车即可。
利用下列的命令生成授权文件。至此,配置部分完成了。
cp id_rsa.pub authorized_keys
这里为什么要使用ssh登录本机哪?因为hadoop在本机部署时,需要使用ssh访问。
注意:文件夹“.ssh”中的三个文件的权限,是有要求的,“自己之外的任何人对每个文件都没有写权限”。另外,“.ssh”文件夹是700权限。如果权限有问题,会造成SSH访问失败。
现在开始验证SSH无密码登录。
执行“ssh localhost”意味着使用“ssh”通信协议访问主机“localhost”,第一次执行时需要确认;第二次不再确认了。这就是无密码登录。当登录到对方机器后,退出使用命令“exit”。这两次操作时,注意观察主机名变化。读者可以执行命令“ssh book0”,验证dns对book0解析是否正确。
注意:使用命令ssh时,一定要观察主机名的变化。很多同学在操作ssh时,由于大量的使用ssh登录退出,忘记自己目前在哪台机器了,执行了大量错误的操作。
另外,如果多次执行ssh,每次都要输入确认信息的话,说明配置失败了。可以删除文件夹“.ssh”,重新配置。也可以重启虚拟机再配置。只要严格按照上面的步骤操作,保证能够成功的。