文章目录

  • 背景
  • 解决
  • 如果还不行
  • 最终效果



背景

这个问题是我在配置Hadoop的时候出现的,如果在一台电脑上虚拟出多台的虚拟机,那么为了便于这些虚拟机之间构建Hadoop集群,我们会使用ssh的免密登录操作,因为如果这个集群之间的各台主机访问对方主机需要密码,那么就会出现

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

centos 7 信任 ssh centos7 ssh permission denied_Hadoop

解决

其实报错已经很明确的说明了是由于公钥的问题,也就是本台主机想登录上其他主机的时候发现需要密码,因此解决办法首先就是解决ssh免密登录的问题。
首先做的是先查看etc配置文件中的ssh_config配置文件是否开启了密码授权选项,在shell中输入

sudo vim /etc/ssh/sshd_config

并且查看是否为yes,如果不是就修改为yes

centos 7 信任 ssh centos7 ssh permission denied_centos 7 信任 ssh_02


之后如果这里没问题,那么就是公钥并没有成功的被加入到authorized_keys这个文件中去

centos 7 信任 ssh centos7 ssh permission denied_centos 7 信任 ssh_03


因此两种做法,第一种是完全重新来,也就是使用

rm -rf .ssh

这个指令完全把.ssh文件删除,然后我们再一次使用ssh命令先登录到远程主机上,在远程主机上的known_hosts文件里留下记录,之后exit远程主机
然后再在本台主机上使用

ssh-keygen -t rsa

命令将公钥与私钥生成
然后在使用

ssh-copy-id xxx远程主机名

把公钥私钥加载到远程主机的authorized_keys文件中.可以使用

cat authorized_keys

查看是否添加成功

centos 7 信任 ssh centos7 ssh permission denied_Hadoop_04


如果没有添加成功,可以在使用

cat id_rsa.pub >> authorized_keys

把公钥加载到文件中.

如果还不行

一般按照上面的方法其实就已经完全可以了.
但是,巧了,我就是那个不行的情况,所以,大杀器就是直接再clone一台没有问题的虚拟机的配置.
然后懂得都懂了,直接把这台没有问题的虚拟机的hosts文件,ip地址修改就可以继续使用了,毕竟你拷贝的是已经完备的hadoop配置好的主机,并且ssh免密登录也没有问题的.我就是用这种方法解决的.毕竟遇事不决,重装系统

最终效果

如果你的免密登录是没有问题的,那么hadoop的配置将会一帆风顺,而我就是由于ssh免密登录导致hadoop的配置让我头大,不过解决方法总归比困难多拉~

centos 7 信任 ssh centos7 ssh permission denied_centos 7 信任 ssh_05