本文装备可完结:集群服务器之间彼此能够ssh免密登录。若只想从单一机器(如master)ssh免密登录其他机器(slave1、slave2),则只跟着操作到第二步即可。
主张先花两三分钟把全文看完再跟着进程操作
操作进程:
1.集群环境:master、slave1和slave2;操作系统为CentOS7。为接下来叙说方便,除了master,其他一切slave统称为slaveX
一切服务器的/etc/hosts文件中都添加了必要的IP到主机名的映射,如下。
192.168.137.20 master
192.168.137.21 slave1
192.168.137.22 slave2
2.装备使得master上可免密登录slaveX。
在master主机上履行以下指令。能够对错root用户,我操作时用的是Hadoop用户。且根据我到目前停止的测验,用哪个用户来做装备,最终就只能经过那个用户完结免密登录,其他用户长途登录仍是需求密码的。
2.1 cd ~ //切换到用户家目录下
2.2 ls -al //检查家目录下有无躲藏途径是 .ssh。假如没有,创立一个。留意检查.ssh目录的权限,是否是 700 (drwx --- ---), 不是的话修改为700
2.3 cd .ssh //进入到.ssh目录下
2.4 ssh-keygen -t rsa //指令履行时接连敲回车符即可;
//该指令将会用rsa算法在~/.ssh目录下生成私钥id_rsa和公钥id_rsa.pub
2.5 ssh-copy-id master //该指令把生成的公钥文件的内容追加到master的authorized_keys 文件中;
//留意履行此指令之前authorized_keys文件可能并不存在,不要紧,直接履行该指令就行,会主动生成的,当然也能够自己创立一个;需留意authorized_keys文件的权限得是600;
//除了ssh-copy-id指令,也能够用cat id_rsa.pub >> authorized_keys的办法将公钥内容追加到authorized_keys 文件中,实在不可你用复制粘贴的办法把内容追加进去应该也是能够的。
//履行完该进程之后在master上就能够经过ssh master指令免密登录自己了。(在这一步之前即使是经过ssh登录自己,也是每一次都需求手动输入密码的)
//authorized_keys文件中的内容是以ssh-rsa最初的一组字符串,如下图:
注:图中的主机名跟文中描绘的master、slaveX不一致,可是不影响对uthorized_keys 文件中内容格局的了解。
2.6 ssh-copy-id slaveX //把master的公钥追加到slaveX的authorized_keys 文件中,之后master可免密登录slaveX
3.装备使得slaveX能够免密登录集群中其他机器
经过上面第二步之后,在master上便已经能够ssh免密登录master、slaveX了,可是从slaveX上仍然无法ssh免密登录其他机器(master、slaveX),若想使得slaveX也像master那样能够免密登录其他机器,则需求在slaveX上也履行第2步相同的进程,即:在slaveX上生成自己的私钥公钥对,然后将它的公钥追加到其他机器的authorized_keys 文件中。
综上,若想装备集群服务器之间彼此能够ssh免密登录,能够有以下两种办法:(两种办法的本质是相同的,只不过履行的进程进程有少许不同)
办法一:一台一台服务器地依照第2步那样操作下去,直到一切机器都装备完结停止;
办法二:一切机器,包含master和slaveX,先分别用ssh-keygen -t rsa指令生成各自的私钥公钥对,接着用ssh-copy-id master指令将master和slaveX的公钥都追加到master的authorized_keys 文件中,当悉数追加结束之后,master的authorized_keys 文件中便已有集群中一切服务器(包含master自己和其他slave)的公钥信息了(可知此刻集群中一切机器都可免密ssh登录master了),它是一份完好的公钥信息文件,这个时分再用scp指令将master上的authorized_keys顺次发送到各个slave的~/.ssh/目录下(scp指令示例:scp ~/.ssh/authorized_keys hadoop@node01:~/.ssh/)。如此,便使得整个集群彼此之间都能够免密ssh登录了。
--------------------------------------------------------------------------------
至于下面这一步,在网上查询材料时在单个博文中看到操作中有这步,我操作时没有装备这项,我不知道它对成果有什么影响,由于我没有做这步装备也使得ssh免密登录成功了。假如一定要装备的话,则是在第2步履行之前完结这项装备。
集群中的每台主机上
sudo vim /etc/ssh/sshd_config
敞开下面的选项
RSAAuthentication yes //答应用RSA密钥进行身份验证
PubkeyAuthentication yes //答应用公钥进行身份验证
AuthorizedKeysFile .ssh/authorized_keys //本机保存的公钥的文件(这个比较重要)
一、配置yum和hosts文件
配置hosts文件:
命令:vi /etc/hosts
在文件尾部添加
192.168.1.106 linux1
192.168.1.107 linux2
192.168.1.108 linux3
192.168.1.109 linux4
二、什么是ssh
管理员可以通过远程登陆的方式,对通过网相连的分散于各处的多台主机进行管理操作。
管理员可以对远程主机进行如下操作:
远程登陆
远程命令执行
远程文件传输
遗憾的事情是:这些操作不安全!
使用纯文本口令,并用明文发送
信息可能会被截取,口令可能会被检索
未经授权的人员使用截取的口令登陆系统而对系统造成危害
SSH的目标
在不安全的网络上提供安全的网络服务。
三、安装命令
yum install -y openssh-server openssh-clients
启动ssh:
service sshd start 或 /etc/init.d/sshd start
配置开机启动:
chkconfig --level 2345 sshd on
四、ssh免密登录
ssh-keygen的命令手册,通过”man ssh-keygen“命令:
关于/etc/ssh/sshd_config文件,网上查询到的主张:『除非有必要,否则请不要更改 /etc/ssh/sshd_config 这个档案的设定值!』由于预设的情况下通常都是最紧密的 SSH 保护了,因而,能够不需求更动他!