前言:
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的。telnet,因为其不安全性,在linux系统中被搁置使用了。
" 公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub
; 私钥文件:~/.ssh/id_rsa
)。然后把公钥放到服务器上(~/.ssh/authorized_keys
), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。
SSH无密码登录原理
此操作是为了搭建hadoop集群进行的操作。
Master(NameNode|JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode|Tasktracker)上的时候,需要在Master上生成一个密钥对(公钥和私钥),当Master通过SSH( struts+spring+hibernate的一个集成框架)连接到Slave的时候,Slave就会生成 一个随机数并用Master的公钥对随机数进行加密,并发送给Master.Master收到加密数值再用私钥解密,并将解密数据回传给Slave,Slave确认解密数据无误之后就允许Master进行连接了,这就是公钥认证过程,期间不需要手动输入密码,重要的是将客户端Master复制到Slave上在Master机器上成成密钥对,文件默认保存在~/.ssh文件夹下, 根据sshd_config中的配置,将公钥文件追加到授权的key里面去。
hadoop集群免密登陆示意图
本教程是主机无密码登录两个从机
第一步:
在主机生成keygen
第二步:
查看/etc/ssh/sshd_config文件
此处不给出源码
修改前
修改后
第三步:
解析:修改authorized_keys文件的权限,因为权限不对的话不可以使用RSA功能
验证是否可以使用无密码登陆本机
第四步:
在hadoop002上新建~/.ssh文件夹
第五步:
将master上的公钥复制到slave1机器上
第六步:
slave1机器上将master上复制来的公钥追加到authorized_keys文件中,并更改文件权限,同理也需要修改sshd_config配置文件(见上第二步)
第七步:
验证
同理:hadoop003上新建~/.ssh文件夹…【重复第四步到第七步】
进阶
多台linux服务器ssh相互无密码访问
多台服务器相互无密码访问,与两台服务器单向无密码访问的原理是一样的,只不过由于是多台服务器之间相互无密码访问,不能象两台服务器无密码登录那样直接上传,步骤如下:
1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa
2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:
举例如192.168.15.240,192.168.15.241,192.168.15.242这三台服务器需要做相互免密码登陆,在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令,将公钥复制到其它两台服务器上(此处以192.168.15.240为例,用户为root,其它两台步骤相同)
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.241
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.242
以上命令,可以自动将公钥添加到名为authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了
快速链接
上一篇 | 汇总目录 | 下一篇 |
---|---|---|
5.3.1 克隆虚拟机并创建从机 | 云计算数据平台-hadoop集群 | 5.3.3 使用ssh传输文件 |