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

建议先花两三分钟把全文看完再跟着步骤操作


操作步骤:

1.集群环境

1)服务器为:master、slave1和slave2;

2)操作系统为Centos7(实际测试其实在Centos6.5和红帽7和6.5版本都是可行的,其他系统没测试过)。

3)为接下来叙述方便,除了master,其他所有slave统称为slaveX

4)所有服务器的/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  查看家目录下有无隐藏路径 .ssh。

如果没有,创建一个,此时需注意修改.ssh目录的权限为 700。

ls -al

2.3 进入到.ssh目录下

cd .ssh

2.4执行ssh-keygen命令生成公钥私钥

ssh-keygen -t rsa

注:

1)命令执行时连续敲3次回车符即可;

2)该命令将会用rsa算法在~/.ssh目录下生成私钥id_rsa公钥id_rsa.pub。还有其他的加密算法比如dsa,使用dsa也是可以的。

3)有时候可能在网上看到有这种用法:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa。其中,-P参数表示密码,-P '' 就表示空密码,用-P参数的话执行该命令时可以少敲2次回车;-f参数用于指定秘钥文件名,使用该参数可以少敲1次回车

2.5 把生成的公钥文件的内容追加到master的authorized_keys 文件中

ssh-copy-id -i ~/.ssh/id_rsa.pub master

注:

1)-i参数指定公钥文件

2)注意执行此命令之前authorized_keys文件可能并不存在,没关系,直接执行该命令就行,会自动生成的;也可以自己新建authorized_keys文件,此时需注意将文件权限修改为600;

3)除了ssh-copy-id命令,也可以用cat  id_rsa.pub >> authorized_keys的方式将公钥内容追加到authorized_keys 文件中;或者手动编辑该文件使用复制粘贴的方式把内容追加进去也是可以的。

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

5)authorized_keys文件中的内容大致如下图:

  

  图注:

1)图中的主机名跟文中描述的master、slaveX不一致,但是不影响对uthorized_keys 文件中内容格式的理解;

2)另外我截的这张图是用dsa算法生成的公钥内容,用rsa算法生成公钥内容跟这个差不多。

2.6 把master的公钥追加到slaveX的authorized_keys 文件中,之后master可免密登录slaveX

ssh-copy-id -i ~/.ssh/id_rsa.pub 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-i-i ~/.ssh/id_rsa.pub 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  //本机保存的公钥的文件(这个比较重要

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


L07-Linux配置ssh免密远程登录的更多相关文章

  1. Linux下配置ssh免密远程登录

    步骤 使用ssh-keygen生成密钥对 提示要求输入保存的位置,密码等信息.全部使用默认信息即可 使用ssh-copy-id user@host将公钥拷贝到需要免密登录的服务器的账户中. 例如,需要 ...

  2. Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法

    目录 1 什么是SSH 2 配置SSH免密登录 2.1 安装必需的软件 2.2 ssh-keygen创建公钥-私钥对 2.3 ssh-copy-id把A的公钥发送给B 2.4 在A服务器上免密登录B服 ...

  3. 利用系统自带工具快速实现SSH免密远程登录

    一.软件环境 操作系统:CentOS Linux release 7.4.1708 (Core) SSH版本 [root@Geeklp201 ~]# ssh -V OpenSSH_7.4p1, Ope ...

  4. linux 配置ssh免密登录

    一.SSH概念(百度) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目 ...

  5. linux配置 ssh 免密 登录

    1:第一步给每一台电脑生成公私钥 使用   在 root 目录下面 使用  ssh-keygen -t rsa ,然后不停敲回车.就可以生成公私钥.默认放在  .ssh 目录下面. 2:进入.ssh ...

  6. Linux配置ssh免密登录

    假定有3台机,用户名和IP分别是:C1  192.168.1.101C2  192.168.1.102C3  192.168.1.103 # 登入root用户su # 安装vimapt-get ins ...

  7. Linux 配置SSH免密登陆

    1.在hadoop01服务器上 通过ssh -keygen 生成公私钥  [ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa] 2.把公钥给hadoop02服务器 3. ...

  8. 【Linux】配置SSH免密登录

    环境说明 假设我们有三台机器分别为bigdata111,bigdata112,bigdata113,三台机器均为centos 7系统. 配置SSH免密登录 (1)利用Xshell的发送键输入到所有会话 ...

  9. linux服务器ssh免密登录

    环境:两台服务器,Park01.Park02,配置ssh免密登录 在Park01执行:ssh-keygen 然后一直回车 生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下   然后 ...

随机推荐

  1. php多进程pcntl学习(二)

    多进程中数据独立,变量无法共享,所以可以使用shmop共享内存实现(cli模式不支持APC扩展),或者存储到redis这种nosql中. 下面实例,开10个进程结合redis集合,做一些简单的任务处理 ...

  2. SqlMapConfig配置文件中的typeAliases标签用于自定义别名

    1.mybatis支持别名: 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _flo ...

  3. Ubuntu在命令行下将默认语言改为英语

    将Ubuntu安装成中文版,需要将默认语言改为英文. 用vi(或nano等文本编辑器)打开 /etc/default/locale 文件 将原来的配置内容修改为 LANG=”en_US.UTF-8″ ...

  4. 京东应用架构设计ppt阅读总结

    (一)架构设计原则总结: 1.架构愿景:高可用性.高可扩展性.低成本.多快好省(高时效.高人效.低成本) 2.业务架构设计原则:基础业务下沉抽象成平台.核心业务非核心业务分离.隔离不同类型的业务.主流 ...

  5. 从Objective-C到Swift,你必须会的(四)DLog

    调试的时候打断点太慢,所以输出log就是一个很好的选择了.断点,一行一行的按,太麻烦了.从log里一条一条的看,很快就可以找到到哪个函数的哪个地方这个代码就没执行了.这里不详细讨论调试技巧的事.不过大 ...

  6. 《Forward团队-爬虫豆瓣top250项目-开发文档》

    码云地址:https://github.com/xyhcq/top250 模块功能:获取豆瓣top250网页的源代码,并分析. def getHTMLText(url,k): # 获取网页源代码 tr ...

  7. I-Keyboard

    SPOJ Problem Set (classical) 14. I-Keyboard Problem code: IKEYB Most of you have probably tried to t ...

  8. 数据恢复软Extundelete

    1>概述  作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎重和细心,但是有时也难免发生出现数据被误删除的情况,这个时候该如何              快速.有效地恢复数 ...

  9. [leetcode] 6. Balanced Binary Tree

    这个题目纠结了一会儿,终于从二叉树转化到AVL了.题目如下: Given a binary tree, determine if it is height-balanced. For this pro ...

  10. HighCharts使用总结

    1.常用属性 chart: type:areaspline(线面图).arearange(区间图) zoomType: 缩放类型(沿着'xy'轴缩放) alignTicks:设置坐标轴刻度对齐. 当有 ...