下面按**“在 CentOS 上配置 HDFS 所需 SSH(无密码登录)”**来理解你的问题,这是搭建 Hadoop/HDFS 最基础的一步。
sudo yum install -y openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
useradd hadoop
passwd hadoop
后续操作建议在 hadoop 用户下进行。
切换到 hadoop 用户:
su - hadoop
生成密钥(一路回车):
ssh-keygen -t rsa
生成内容:
~/.ssh/id_rsa(私钥)~/.ssh/id_rsa.pub(公钥)cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
测试:
ssh localhost
在 NameNode 执行:
ssh-copy-id hadoop@datanode1
ssh-copy-id hadoop@datanode2
或手动复制:
scp ~/.ssh/id_rsa.pub hadoop@datanode1:~/
在 DataNode 上:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
编辑 ~/.ssh/config:
Host namenode
HostName 192.168.1.10
User hadoop
Host datanode1
HostName 192.168.1.11
User hadoop
sudo setenforce 0
sudo systemctl stop firewalld
⚠️ 生产环境请放行 22 端口而不是关闭防火墙。
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
workers(旧版 slaves)
datanode1
datanode2
start-dfs.sh
jps
应看到:
❌ Permission denied (publickey)
→ authorized_keys 权限不对(必须是 600)
❌ SSH 很慢
→ 修改 /etc/ssh/sshd_config
UseDNS no
如果你是指:
可以告诉我具体场景,我给你更精准的配置方案。