Ubuntu下搭建hadoop出现Permission denied publickey password 的问题

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

最近在利用实验室的服务器搭建hadoop,一边看网上教程,一边动手自己搭建,发现还是容易碰到很多问题
问题来源
1. 老师在一台电脑新建了一个ubuntu虚拟机,然后配置好后直接使用克隆的方式,在本地复制了多台虚拟机。
2. 我在实验室中直接建好多台虚拟机,而且采用的是每个手动配置的方式
3. 在搭建hadoop过程中需要使用SSH的RSA认证方法使集群中的主机省去密码登录
4. 首先需要安装open-ssh服务sudo apt-get install openssh-server
5. 在本机生成密钥对`ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
6. 将公钥放到自动认证的xx文件中(我也不太懂) cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


问题现象

  • 使用ssh登录本机没问题即ssh localhost后输入一次yes再次登录本机的时候不需要输入什么就可以登录
  • 使用ssh登录其他主机的时候需要输入主机的非root用户的密码才能连接(出现Permission denied (publickey,password).)
  • 如果无法使用ssh无密码连接其他节点的主机,那么在启动hadoop的时候会出现的输入其他主机的密码,即使正确输入也无法认证

解决办法:使用scp命令将hadoop核心主机(namenode)的authorized_keys文件放到其他主机的.ssh文件夹下,可使用命令“`scp ~/.ssh/authorized_keys aaa@ServerIP:~/.ssh/

“`注:此命令需要输入帐号aaa的密码,最好保证各个主机的用户名是aaa(相同),因为用rsa产生密钥对的时候应该是和主机的用户名有关,我也是根据<<网络安全>>这门课想出的这个问题


成功后在核心主机使用ssh 加其他主机的ip就可以实现无密码登录,然后就可以使用
start-all.sh --config xxx/xxx/hadoop-x.x.x/etc/xxx/启动了,如下图

这里写图片描述

这里写图片描述
这里写图片描述

PS:有时停止hadoop,断开主机ssh连接后(我是用x-shell连接主机的),再次启动hadoop的时候会出现下图
查看其他主机的目录发现
将此类型的主机使用命令ecryptfs-mount-private输入帐号的密码即可


PS:scp需要使用root用户时,无法正确认证
因为ubuntu默认下关闭了root用户的远程ssh登录,需要在远程主机的 /etc/ssh/sshd_config文件中将PermitRootLogin 改为yes(无论后面是no还是其他单词)
重启ssh服务sudo /etc/init.d/ssh restart
就可以使用scp 向远程主机的root权限下的目录下写入文件

点这里可以跳转到人工智能网站

发表评论