hadoop集群安全配置之SSH(zz)

 

转自:http://www.cnblogs.com/lanxuezaipiao/p/3525554.html

1)SSH无密码原理

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。

2)Master机器上设置无密码登录

a. Master节点利用ssh-keygen命令生成一个无密码密钥对。

在Master节点上执行以下命令:

ssh-keygen –t rsa –P ''

运行后询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa(私钥)和id_rsa.pub(公钥),默认存储在"/home/用户名/.ssh"目录下。
查看"/home/用户名/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。

b. 接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

查看下authorized_keys的权限,如果权限不对则利用如下命令设置该文件的权限:

chmod 600 authorized_keys

c. 用root用户登录修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

检查下面几行前面”#”注释是否取消掉:

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile  %h/.ssh/authorized_keys # 公钥文件路径

设置完之后记得重启SSH服务,才能使刚才设置有效。重启命令是service ssh restart

退出root登录,使用普通用户验证是否设置成功。

clip_image015[12]

从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制

的Slave机器上。

    注意:有时候在测试时可能会出现错误: Agent admitted failure to sign using the key.解决办法是:ssh-add   ~/.ssh/id_rsa ,如下所示:

clip_image016[12]

d.使用ssh-copy-id命令将公钥传送到远程主机上(这里以Slave1.Hadoop为例)。

clip_image018[12]

e. 测试是否无密码登录其它机器成功。

clip_image020[12]

到此为止,我们经过5步已经实现了从"Master.Hadoop"到"Slave1.Hadoop"SSH无密码登录。

接下来配置所有Slave无密码登录Master,其和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)

注意:期间可能会出现一些问题如下:

(1)如果在ssh连接时出现错误“ssh:connect to host port 22: Connection refused”,如下图所示:

clip_image021[12]

则可能是因为远程登录的那台机器没有安装ssh服务或安装了没有开启ssh服务,下面到Slave3.Hadoop主机进行测试:

clip_image023[12]

为了一劳永逸,设置系统启动时开启服务:# systemctl enable sshd.service

clip_image025[12]

(2)如果在用命令ssh-copy-id时发现找不到该命令“ssh-copy-id:Command not found”,则可能是ssh服务的版本太低的原因,比如若你的机器是Redhat系统就可能该问题,解决办法是:手动复制本地的pubkey内容到远程服务器,命令如下:

 cat ~/.ssh/id_rsa.pub | ssh hadoop@Master.Hadoop 'cat >> ~/.ssh/authorized_keys'

该命令等价于下面两个命令:

①在本地机器上执行:scp ~/.ssh/id_rsa.pub hadoop@Master.Hadoop:/~

②到远程机器上执行:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

 clip_image027[12]

posted @ 2016-03-12 11:31  awar  阅读(273)  评论(0)    收藏  举报