作者:手机用户2502919817_667 | 来源:互联网 | 2024-11-13 09:14
本文详细介绍了在Ubuntu系统上搭建Hadoop集群时遇到的SSH密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码SSH登录,从而顺利启动Hadoop集群。
在 Ubuntu 系统上搭建 Hadoop 集群时,经常会遇到 SSH 密钥认证问题。以下是我在实验过程中遇到的一些问题及解决方案。
问题背景
- 老师在一个电脑上创建了一个 Ubuntu 虚拟机,并配置好后直接克隆多台虚拟机。
- 我在实验室中手动创建并配置多台虚拟机。
- Hadoop 集群需要使用 SSH 的 RSA 认证方法来实现无密码登录。
具体步骤
- 安装 OpenSSH 服务:
sudo apt-get install openssh-server
- 在本机生成密钥对:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
- 将公钥添加到 authorized_keys 文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
问题现象
- 使用
ssh localhost
登录本机时正常,无需输入密码。 - 使用
ssh other_host
登录其他主机时需要输入密码,并显示 Permission denied (publickey,password)
错误。 - 如果无法实现无密码登录,启动 Hadoop 时会提示输入其他主机的密码,且即使输入正确也无法认证。
解决办法
- 使用 scp 命令将 Hadoop 核心主机(NameNode)的 authorized_keys 文件复制到其他主机的 .ssh 目录下:
scp ~/.ssh/authorized_keys user@other_host:~/.ssh/
- 确保所有主机的用户名相同,因为 RSA 密钥对与主机用户名相关。
成功后,在核心主机上使用 ssh other_host_ip
即可实现无密码登录,然后可以使用 start-all.sh --config /path/to/hadoop-config
启动 Hadoop 集群。
注意事项
- 有时停止 Hadoop 并断开 SSH 连接后,再次启动 Hadoop 时可能会遇到问题。检查其他主机的目录,如有必要,使用
ecryptfs-mount-private
命令输入账户密码。 - 如果需要使用 root 用户进行 scp 操作,Ubuntu 默认情况下禁止 root 用户的远程 SSH 登录。可以在远程主机的
/etc/ssh/sshd_config
文件中将 PermitRootLogin
改为 yes
,然后重启 SSH 服务:sudo /etc/init.d/ssh restart
。