hadoop分布式安装

先配置免登录

先准备了7个节点

192.168.101.172       node1
192.168.101.206       node2
192.168.101.207       node3
192.168.101.215       node4
192.168.101.216       node5
192.168.101.217       node6
192.168.101.218       node7

配置hosts文件如下,以192.168.101.206为例:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 node2(每台机器不一样)
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.101.172       node1
192.168.101.207       node3
192.168.101.215       node4
192.168.101.216       node5
192.168.101.217       node6
192.168.101.218       node7

修改主机名:

vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node2

开始配置免登录:

先到7台机器分别生成密钥:

rm -rf /root/.ssh/*
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 拷贝到授权文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 安装ssh yum -y install openssh-clients # 然后试试 ssh localhost
ssh localhost
# 可以免密码登录本机

接着要让一台机器可以访问其他得所有机器:

参考了 https://blog.csdn.net/ITYang_/article/details/70144395

先在所有6台机器上执行如家命令,把各个机器得密钥发送到node1(172)机器的authorized_keys中去:

ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2121 192.168.101.172"

把我们的公钥都传递给172这个节点.  在172(node1)上执行: 

cat .ssh/authorized_keys

会看到别的机器节点密钥都传上来了

测试:

此时在别的节点上执行 

ssh node1 -p 2121

发现可以免密码进入node1 !

下一步是把我们辛苦收集到node1机器得.ssh/authorized_keys文件分发到各个节点上去:

在node1得机器上执行一个shell:

#!/bin/bash
SERVERS="192.168.101.172 192.168.101.206 192.168.101.207 192.168.101.215 192.168.101.216 192.168.101.217 192.168.101.218"
PASSWORD=机器密码

# 将当前机器得密钥copy到其他的节点上,为了保证下一步scp得时候可以免密登录 auto_ssh_copy_id() { expect
-c "set timeout -1;
# 如果缺省端口的话 可以直接spawn ssh-copy-id $1; spawn ssh-copy-id \" -p 2121 $1 \"; expect { *(yes/no)* {send -- yes\r;exp_continue;} *assword:* {send -- $2\r;exp_continue;} eof {exit 0;} }"; }
# 循环所有得机器,开始copy ssh_copy_id_to_all() {
for SERVER in $SERVERS do auto_ssh_copy_id $SERVER $PASSWORD done }
# 调用上面的方法 ssh_copy_id_to_all
# 循环所有得机器ip,scp把当前机器得密钥全都copy到别的机器上去(端口2121,如果缺省的话可以不填写)
for SERVER in $SERVERS do scp -P 2121 ~/.ssh/authorized_keys root@$SERVER:~/.ssh/ done

在这台node1机器分别执行ssh nodex -p xxxx 之后选yes,会缓存knowhost

然后scp这个文件到其他的机器上去:

#!/bin/bash
SERVERS="192.168.101.172 192.168.101.206 192.168.101.207 192.168.101.215 192.168.101.216 192.168.101.217 192.168.101.218"
PASSWORD=机器密码


for SERVER in $SERVERS
do
    scp -P 2121 ~/.ssh/known_hosts root@$SERVER:~/.ssh/
done

这样其他得机器就不用首次输入yes了

至此,机器面密码登录搞定.

猜你喜欢

转载自www.cnblogs.com/radio/p/9233502.html
今日推荐