在 CentOS 上配置 HDFS(Hadoop)SSH 免密登录,通常是 NameNode 到 DataNode / 自身 的免密。下面按最常用、最稳妥的方式来说明。
hadoop 或 root(生产建议普通用户)ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
生成后会有:
~/.ssh/id_rsa # 私钥
~/.ssh/id_rsa.pub # 公钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
测试:
ssh localhost
无需密码即成功。
在 NameNode 上执行:
ssh-copy-id hadoop@datanode1
ssh-copy-id hadoop@datanode2
如果是 root:
ssh-copy-id root@datanode1
输入一次密码后,以后免密。
在 NameNode:
scp ~/.ssh/id_rsa.pub hadoop@datanode1:/tmp/
在 DataNode:
mkdir -p ~/.ssh
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
永久关闭:
vi /etc/selinux/config
SELINUX=disabled
core-site.xml<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
hdfs-site.xml<property>
<name>dfs.namenode.secondary.http-address</name>
<value>namenode:50090</value>
</property>
workers(Hadoop 3+)datanode1
datanode2
在 NameNode:
start-dfs.sh
查看进程:
jps
NameNode / DataNode 正常即说明免密 OK。
~/.ssh 权限不对authorized_keys 权限不是 600vi /etc/ssh/sshd_config
确认:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启:
systemctl restart sshd
如果你愿意,可以告诉我:
我可以给你 精确命令版配置。