L07-Linux配置ssh免密远程登录

建议先把全文看完再跟着步骤操作

本文配置可实现:集群服务器之间相互都可以ssh免密登录。若只想从单一机器(如master)ssh免密登录其他机器(slave1、slave2),则只跟着操作到第二步即可。

操作步骤:

1.集群:master、slave1和slave2,实验时操作系统都是Centos7

所有机器的/etc/hosts文件中都添加了主机名到IP的映射,如 :

192.168.137.20 master

192.168.137.21 slave1

192.168.137.22 slave2

2.配置使得master上可免密登录slave1和slave2。

在master主机上执行以下命令,注意可以是非root用户,比如我测试时用的是hadoop用户,如果用的是hadoop用户来配置的话,那么就只能通过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文件可能并不存在,没关系,直接执行该命令就行,会自动生成的;

            //当然若.ssh目录下真的没有authorized_keys文件的话,也可以自己创建一个,此时需注意文件的权限得是600;

            //除了ssh-copy-id命令,也可以用cat  id_rsa.pub >> authorized_keys的方式将公钥内容追加到authorized_keys 文件中。

            //执行完该步骤之后在master上就可以通过ssh  master命令免密登录自己了。(在这一步之前即使是通过ssh登录自己,也是每一次都需要手动输入密码的)

            //authorized_keys文件中的内容是以ssh-rsa开头的一组字符串,如下图:

注:图中的主机名跟文中描述的master、slave1和slave2不一致,但是不影响对uthorized_keys 文件中内容格式的理解。

 2.6 ssh-copy-id slave1  //把master的公钥追加到slave1的authorized_keys 文件中,此时master可免密登录slave1

2.7 ssh-copy-id slave2  //把master的公钥追加到slave2的authorized_keys 文件中,此时master可免密登录slave2

3.配置使得slave1和slave2可以免密登录集群中其他机器

经过上面第二步之后,master上可以ssh免密登录master、slave1和slave2了,但是从slave1(或salve2)上依然无法ssh免密登录其他机器(master、slave1和slave2),若需要使得slave1也像master那样可以免密登录其他机器,则需要在slave1上也执行上面同样的步骤,即:在slave1上生成自己的私钥公钥对,然后将它的公钥追加到其他机器的authorized_keys 文件中。

那么配置集群服务器之间相互可以ssh免密登录,可以一台台服务器地按照第2步那样操作下去,直到所有机器都配置完成位置。但是也可以采用下面这种做法:所有机器,包括master、和其他slave,先分别用ssh-keygen -t rsa命令生成各自的私钥公钥对(id_rsa和id_rsa.pub),然后用ssh-copy-id master命令将master和其他所有slave的公钥都追加到master的authorized_keys 文件中,当全部追加完毕之后,此时master上的authorized_keys 文件中已有所有slave和master的公钥信息了(可知此时集群中所有机器都可免密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  //本机保存的公钥的文件(这个比较重要

对于/etc/ssh/sshd_config文件,网上查询到的建议:『除非有必要,否则请不要更改 /etc/ssh/sshd_config 这个档案的设定值!』因为预设的情况下通常都是最严密的 SSH 保护了,因此,可以不需要更动他!

猜你喜欢

转载自www.cnblogs.com/suhaha/p/9071216.html