共计 1582 个字符,预计需要花费 4 分钟才能阅读完成。
最近抛弃非 ssh 连接的 Hadoop 集群部署方式了,还是回到了用 ssh key 验证的方式上了。这里面就有些麻烦,每台机器都要上传公钥。恰恰我又是个很懒的人,所以写几个小脚本完成,只要在一台机器上面就可以做公钥的分发了。
首先是生成 ssh key 脚本
#!/bin/sh
ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
ssh-keygen 一般来说需要输入 passphrase,但是一般都是三个回车过去了,我懒的输入,加上 -P ” 就不用了。
然后是添加公钥到从节点的脚本
#!/bin/sh
read -p “ 输入远端服务器 IP: ” ip
ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@$ip
ssh root@$ip ‘sed -i “s/^#RSAAuthentication\ yes/RSAAuthentication\ yes/g” /etc/ssh/sshd_config’
ssh root@$ip ‘sed -i “s/^#PubkeyAuthentication\ yes/PubkeyAuthentication yes/g” /etc/ssh/sshd_config’
ssh root@$ip ‘sed -i “s/^#PermitRootLogin\ yes/PermitRootLogin\ yes/g” /etc/ssh/sshd_config’
ssh root@$ip ‘service sshd restart’
hostname=`ssh root@${ip} ‘hostname’`
echo “ 添加主机名和 IP 到本地 /etc/hosts 文件中 ”
echo “$ip $hostname” >> /etc/hosts
echo “ 远端主机主机名称为 $hostname, 请查看 /etc/hosts 确保该主机名和 IP 添加到主机列表文件中 ”
echo “ 主机公钥复制完成 ”
然后是第三个脚本读取主机列表然后把 /etc/hosts 复制到所有主机上
#!/bin/sh
cat /etc/hosts | while read LINE
do
ip=`echo $LINE | awk ‘{print $1}’ | grep -v “::” | grep -v “127.0.0.1”`
echo “Copying /etc/hosts to ${ip}”
scp -o StrictHostKeyChecking=no /etc/hosts root@${ip}:/etc/
done
不解释了
相关阅读 :
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13