背景
这个问题是我在配置Hadoop的时候出现的,如果在一台电脑上虚拟出多台的虚拟机,那么为了便于这些虚拟机之间构建Hadoop集群,我们会使用ssh的免密登录操作,因为如果这个集群之间的各台主机访问对方主机需要密码,那么就会出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
解决
其实报错已经很明确的说明了是由于公钥的问题,也就是本台主机想登录上其他主机的时候发现需要密码,因此解决办法首先就是解决ssh免密登录的问题。
首先做的是先查看etc配置文件中的ssh_config配置文件是否开启了密码授权选项,在shell中输入
sudo vim /etc/ssh/sshd_config
并且查看是否为yes,如果不是就修改为yes
之后如果这里没问题,那么就是公钥并没有成功的被加入到authorized_keys这个文件中去
因此两种做法,第一种是完全重新来,也就是使用
rm -rf .ssh
这个指令完全把.ssh文件删除,然后我们再一次使用ssh命令先登录到远程主机上,在远程主机上的known_hosts文件里留下记录,之后exit远程主机
然后再在本台主机上使用
ssh-keygen -t rsa
命令将公钥与私钥生成
然后在使用
ssh-copy-id xxx远程主机名
把公钥私钥加载到远程主机的authorized_keys文件中.可以使用
cat authorized_keys
查看是否添加成功
如果没有添加成功,可以在使用
cat id_rsa.pub >> authorized_keys
把公钥加载到文件中.
如果还不行
一般按照上面的方法其实就已经完全可以了.
但是,巧了,我就是那个不行的情况,所以,大杀器就是直接再clone一台没有问题的虚拟机的配置.
然后懂得都懂了,直接把这台没有问题的虚拟机的hosts文件,ip地址修改就可以继续使用了,毕竟你拷贝的是已经完备的hadoop配置好的主机,并且ssh免密登录也没有问题的.我就是用这种方法解决的.毕竟遇事不决,重装系统
最终效果
如果你的免密登录是没有问题的,那么hadoop的配置将会一帆风顺,而我就是由于ssh免密登录导致hadoop的配置让我头大,不过解决方法总归比困难多拉~