启动HDFS报错localhost: Permission denied publickey,password
启动HDFS报错
dblab@dblab-Vmware:/usr/local/hadoop$ ./sbin/start-dfs.sh
Starting namenodes on [localhost]
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: Permission denied (publickey,password).
Starting datanodes
localhost: Permission denied (publickey,password).
Starting secondary namenodes [dblab-Vmware]
dblab-Vmware: Warning: Permanently added 'dblab-vmware' (ECDSA) to the list of known hosts.
dblab-Vmware: Permission denied (publickey,password).
以下是一些可能的解决方法:
检查SSH配置
- 确保SSH服务已安装并运行:在Ubuntu系统中,可以使用以下命令检查SSH服务的状态,如果未安装则进行安装。
sudo service ssh status
# 如果未安装,使用以下命令安装
sudo apt-get install openssh-server
- 生成SSH密钥对:如果尚未生成SSH密钥对,需要在启动DFS的用户(这里是
dblab
)下生成。在终端中执行以下命令:
ssh-keygen -t rsa
在生成过程中,可以直接按回车键使用默认设置,这将在 ~/.ssh/
目录下生成 id_rsa
(私钥)和 id_rsa.pub
(公钥)文件。
- 将公钥添加到授权列表:将生成的公钥内容添加到
authorized_keys
文件中,以便实现无密码登录。可以使用以下命令将公钥内容追加到authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
同时,确保 ~/.ssh
目录和 authorized_keys
文件的权限设置正确,一般来说,~/.ssh
目录的权限应该是 700
,authorized_keys
文件的权限应该是 600
。可以使用以下命令设置权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
检查Hadoop配置文件中的用户和权限设置
- 检查
hadoop-env.sh
文件:确保其中设置的HDFS_NAMENODE_USER
、HDFS_DATANODE_USER
和HDFS_SECONDARYNAMENODE_USER
等环境变量与你当前登录的用户(dblab
)一致,如果不一致,需要修改为正确的用户名。 - 检查文件和目录权限:确保Hadoop安装目录(
/usr/local/hadoop
)及其子目录和文件的权限设置正确,启动DFS的用户(dblab
)应该对这些文件和目录具有适当的读写和执行权限。可以使用以下命令递归地设置权限:
sudo chown -R dblab:dblab /usr/local/hadoop
sudo chmod -R 755 /usr/local/hadoop
检查主机名和IP地址配置
- 检查
/etc/hosts
文件:确保其中正确配置了主机名与IP地址的映射关系,特别是对于localhost
和dblab-Vmware
的映射。例如,应该有类似以下的条目:
127.0.0.1 localhost
<你的虚拟机IP地址> dblab-Vmware
- 检查Hadoop配置文件中的主机名设置:在
core-site.xml
和hdfs-site.xml
等配置文件中,确保配置的主机名与实际的主机名或IP地址一致。
完成上述检查和设置后,再次尝试启动DFS:
./sbin/start-dfs.sh