ssh无法免密登录,仍需要输入密码的问题 Authentications that can continue: publickey,password

问题描述

在学习Hadoop集群配置中,当我基本配置完成后,打开 jps 查看进程后发现进程是比正常的五个少的,经过排查之后发现是在ssh免密登录上出现了问题,是无法在master上免密登录另外两台虚拟机,但是另外两台之间是可以实现免密登录的。在这个地方出现了问题所以导致进程缺少。

原因分析和解决方案::

发现问题是一步步的,觉得有很多问题都是连锁反应。

*1.首先是调用 cat .ssh/authorized_keys 这条命令分别在三台虚拟机上查看了已经发送好了的汇集三台公钥的key

cat .ssh/authorized_keys

结果是在slave1、slave2上密钥是完整的(即是master、slave1、slave2三个节点的哈希值都存在)但是master却没有另外两个节点的哈希值。

关于在设置三台公钥时用的命令

#在slave1和slave2上分别运行下面的命令
hadoop@master:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
#在master上运行命令
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在节点1分别运行下列命令,将汇总得到的key分发到节点2和3
scp ~/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh
scp ~/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh

经过检查后发现是,master在发送密钥时未成功的问题,又和同学讨论后,发现是配置ip与主机名映射的问题,此处的解决方法是:

不用先着急删除密钥进行重新生成和配置authorized_keys,先检查虚拟机的ip配置

sudo mv hosts /etc/
sudo nano /etc/hosts
127.0.0.1 localhost
(此处应该还有原始的master IP 忘记截图了)

> 请务必将相同主机名称的IP删除 不要存在两个相同的主机名称,这样似乎会导致发送时混淆,我当时保留了原配置的master IP,所以使master在发送和接收密钥时都失败了。

仅保留这样即可
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
> 三台虚拟机配置要相同 即三台都要进行此操作

2. 解决这个问题后,发现仍然在登陆时需要密码。
在检查权限没有问题,以及vim /etc/ssh/sshd_config修改相关参数后仍然未解决,于是调用了ssh -vvv 查看了日志

在这里插入图片描述

发现在日志中出现了这一句
Authentications that can continue: publickey,password

在网上查阅后,首先发现有说是DNS解析问题导致ssh连接很慢,需要复制 UseDNS no 于 sshd_config 内。
我测试之后发现无效。

再次了解 Authentications that can continue: publickey,password这句之后,发现了原因:

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey # 接受来自远程机的公钥(public key)
debug1: Offering public key: /home/ubuntu/.ssh/id_rsa RSA SHA256:P3VGyF5dZOs2u3020QohHmfB6tfUhgq8kByu06iMjzo agent
debug1: Authentications that can continue: publickey,password # 下面是尝试私钥解密部分 会发现对不上;因为远程机的authorized_keys里面没有这个私钥所对应的公钥
debug1: Trying private key: /home/ubuntu/.ssh/id_dsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ecdsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ecdsa_sk
debug1: Trying private key: /home/ubuntu/.ssh/id_ed25519
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/ubuntu/.ssh/id_ed25519_sk
debug1: Trying private key: /home/ubuntu/.ssh/id_xmss
debug1: Next authentication method: password #(私钥解密失败 尝试用密码登录!)

这里是这段日志解释的完整文章来源

debug1: Authentications that can continue: publickey,password # 下面是尝试私钥解密部分 会发现对不上;因为远程机的authorized_keys里面没有这个私钥所对应的公钥

我在解决完问题1后,只将master的authorized_keys文件重新写入了一遍,在查看后发现master的节点哈希值比slave1和slave2多了两个master的,最开始以为都是master就没有在意,而现在应该是slave1和slave2的authorized_keys里面没有这个私钥所对应的公钥,所以使免密登录失败。

这里的解决方法是:

再次在节点1(master)分别运行下列命令,将汇总得到的key分发到节点2和3
scp ~/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh
scp ~/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh

将master的authorized_keys复制到slave1和slave2中,使其完全相同,此时在进行免密登录就可以实现三台之间的互相登录了。

其他:

我在解决上面问题后,jps进程就正常了,但是如果安装jdk、hadoop,设置环境变量、格式化集群,hadoop namenode –format等过程中仍然出现不合理,进程似乎是仍会不合适,此处仅对后面配置无误,仅ssh免密登录出现问题,进行讨论。
此外本人属于新手小白,解决此问题花了将近一个月,可能给出的解决方法仍有问题,欢迎补充,希望上述办法能帮助到一点点被同样问题苦恼的人。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值