0.关于虚拟机
1.关于ssh
<span style="font-family:Microsoft YaHei;font-size:12px;">apt-get install openssh-server</span>
SSH要求服务端和客户端各有两个密钥,为:
服务端私钥/公钥
客户端私钥/公钥
认证过程分为两个步骤:
1)获得会话密钥
客户端请求连接,服务端接到请求后将自己的公钥和一个会话ID发送给客户端,客户端根据会话ID生成会话密钥,然后用服务端的公钥加密后发回给服务端,服务端用自己的私钥解密,得到会话密钥。至此服务端和客户端之间的数据传输都将被会话密钥加密。
2)服务端生成一个随机数,并用客户端的公钥加密后发送给客户端,客户端用自己的私钥解密得到这个随机数,然后用这个随机数和上个步骤的会话密钥经过MD5算法后发到服务器端,服务器端也用MD5算法处理这两个数据,得到客户端发来的结果后与之对比,相同则认证成功。
由于Hadoop集群之间的通信要通过SSH,所以需要设置SSH免密码登录(就是把服务端的公钥放到客户端上):
1)先在客户端和服务端各自生成其公钥和私钥:
ssh-keygen -t rsa #-type 采用rsa加密算法
执行命令以后,在~/.ssh文件夹下会有两个文件:id_rsa(私钥),id_rsa.pub(公钥),至于已认证文件authorized_keys需要自行创建。
PS:这两个文件是隐藏文件,所以应该给ls加上-a参数来查看。
2)确保master和slaver的~/.ssh文件夹下都有这三个文件以后,把master的authorized_keys通过scp命令复制到slaver的~./ssh目录下:cat id_rsa.pub >> authorized_keys
scp authorized user@hostname:~/.ssh
3)权限问题
过高的权限不能通过ssh-add命令,过低的权限无法实现免密码登录。
之前由于没有把ssh文件夹的权限设置成711,导致authorized_keys都设置正确也无法免密码登录。
./ssh的权限设置为711,authorized_keys的权限设为644
参考:http://blog.sina.com.cn/s/blog_72827fb101018wsn.html ←感谢作者~
PS:在/etc/hosts文件设置一下DNS解析,把ip地址映射到主机名会比较方便一点,也能防止更改master/slaver服务器要重新设置hadoop配置文件的情况
2.关于linux命令
1. scp not a regular file错误传文件夹 用-r参数 否则有 not a regular file错误scp -r bdump oraprod@192.168.0.188:bdump