ssh无密连接

1SSH无密码原理

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

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

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服务,才能使刚才设置有效。

        

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

 

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

Slave机器上。

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

 

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

 

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

 

到此为止,我们经过5步已经实现了从"Master.Hadoop"到"Slave1.Hadoop"SSH无密码登录,下面就是重复上面的步骤把剩余的两台(Slave2.Hadoop和Slave3.Hadoop)Slave服务器进行配置。这样,我们就完成了"配置Master无密码登录所有的Slave服务器"。

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

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

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

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

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

(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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值