最重要的前提就是:集群中的所有机器的用户名和用户组必须一样
一般做法都是在每台机器上新建用户组和用户名。
比如:sudo addgroup sparks 新建用户组sparks;
sudo adduser spark sparks 在新建用户组sparks中添加用户spark
sudo adduser spark sudo 添加sudo权限
补充说明:
ubuntu默认root是不能使用,这一点个人感觉不如cntos方便,命令经常要加sudo
继续说ssh的事情,步骤:
1.首先确认每台机器都安装了openssh-server,ubuntu默认安装了openssh-client
查看方法:ps -e |grep ssh
1028 ? 00:00:00 sshd 已安装
如果没有,执行sudo apt-get install openssh-server安装即可
2.分别先在每台机器执行 ssh-keygen -t rsa ,当然rsa只是一种方式,也可以用别的,比如dsa
具体ssh-keygen 可以查看help
会在~/ 目录下生成 .ssh文件,原来是没有cd ~/.ssh 可以看到id_rsa.pub(公钥)和id_rsa(私钥)
3.主从式集群结构master和slave
将每台slave的公钥拷贝到master
例如:在slave1机器上
scp ~/.ssh/id_rsa.pub spark@master:~/.ssh/pub1
在slave2机器上
scp ~/.ssh/id_rsa.pub spark@master:~/.ssh/pub2
…………………
4.在master的~/.ssh下,将pub1,pub2等等追加到authorized_keys文件
authorized_keys该文件默认是不存在(除非以前配过ssh)
直接cat pub1 pub2 >> authorized_keys
5. 将包含所有机器公钥的authorized_keys在分发给所有的slave,即可
scp ~/.ssh/authorized_keys spark@slave1:~/.ssh/
以上演示主要是说明原理,实际工作均用脚本化完成!
然后就可以在任意机器无密码访问别的机器
ssh slave1
如果出现:
Agent admitted failure to sign using the key
执行ssh-add即可!