Grid5000集群执行start-dfs.sh遇权限拒绝问题求助
解决Grid5000环境下Hadoop启动SSH权限拒绝问题
1. 修复SSH密钥与授权文件的权限
Grid5000对文件权限要求严格,错误权限会直接导致公钥认证失效,执行以下命令统一修复:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chmod 600 ~/.ssh/id_rsa
2. 确保公钥同步到所有Hadoop节点
手动SSH跳转有效不代表所有节点的授权文件都正确配置,需批量同步并验证:
- 批量同步公钥到所有节点(替换
[其他节点]为你的集群节点列表):for node in parasilo-1 parasilo-10 [其他节点]; do cat ~/.ssh/id_rsa.pub | ssh $node 'cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh' done - 逐个验证无密码登录,包括本地节点(Hadoop启动时会访问localhost):
ssh parasilo-10 "echo 登录成功" ssh parasilo-1 "echo 本地登录成功"
3. 检查Hadoop的SSH配置与节点列表
- 打开
hadoop-3.3.4/etc/hadoop/hadoop-env.sh,确认SSH参数无错误限制:# 确保没有强制密码认证的参数,添加跳过主机密钥检查(可选) export HADOOP_SSH_OPTS="-o StrictHostKeyChecking=no" - 检查
workers文件(旧版本为slaves),确保节点名和你能SSH的主机名完全一致(Grid5000部分节点可能需要完整域名)。
4. 模拟Hadoop的SSH调用测试
直接用Hadoop自带的SSH命令测试,复现启动时的调用逻辑:
./hadoop/hadoop-3.3.4/bin/hadoop ssh parasilo-10 "echo Hadoop SSH调用测试"
如果此命令失败,说明Hadoop的SSH环境变量配置有问题,需重点排查hadoop-env.sh。
5. Grid5000特殊环境适配
Grid5000节点可能存在home目录缓存问题,可尝试:
- 在每个节点上重新加载密钥:
ssh $node 'eval `ssh-agent` && ssh-add ~/.ssh/id_rsa' - 确认节点SSH服务允许公钥认证:
输出应为ssh $node "grep PubkeyAuthentication /etc/ssh/sshd_config"PubkeyAuthentication yes,若不是需联系Grid5000管理员调整。
内容的提问来源于stack exchange,提问作者Remi
相关产品推荐
相关产品推荐

