之前在《记录一则Linux SSH的互信配置过程》、《Vertica 7.1安装最佳实践(RHEL6.4)》中,都分别提到了配置ssh互信的方法,本文在此基础上进一步整理配置ssh互信的方法,目的是将步骤尽可能的简化,从而更加适合在较大规模的集群中对ssh互信进行快速配置。

场景:适合较大规模集群ssh互信配置.

1.配置节点1的/etc/hosts文件

节点1编辑/etc/hosts文件,添加集群所有主机的IP地址和其对应的主机名:
vi /etc/hosts

192.168.56.102 JY-DB
192.168.56.103 JY-DB2

2.在节点1新建2个脚本

在节点1上传两个安装脚本到/usr/local/bin目录下。

脚本1:用来集群间同步拷贝文件。

cluster_copy_all_nodes

#!/bin/bash
SELF=`hostname`
if [ -z "$NODE_LIST" ]; then
echo
echo Error: NODE_LIST environment variable must be set in .bash_profile
exit 1
fi for i in $NODE_LIST; do
if [ ! $i = $SELF ]; then
if [ $1 = "-r" ]; then
scp -oStrictHostKeyChecking=no -r $2 $i:$3
else
scp -oStrictHostKeyChecking=no $1 $i:$2
fi
fi
done
wait

脚本2:用来集群间同步运行命令。

cluster_run_all_nodes

#!/bin/bash
if [ -z "$NODE_LIST" ]; then
echo
echo Error: NODE_LIST environment variable must be set in .bash_profile
exit 1
fi if [[ $1 = '--background' ]]; then
shift
for i in $NODE_LIST; do
ssh -oStrictHostKeyChecking=no -n $i "$@" &
done
else
for i in $NODE_LIST; do
ssh -oStrictHostKeyChecking=no $i "$@"
done
fi
wait

授予两个脚本的可执行权限:

chmod +x /usr/local/bin/cluster_*

3.配置节点1的环境变量

配置节点1的环境变量:
vi ~/.bash_profile

export NODE_LIST='JY-DB JY-DB2'

将集群中所有的主机名称列出,然后重新登录当前会话,或者执行下面命令使环境变量生效:

source ~/.bash_profile

4.配置整个集群间的ssh互信

4.1 各节点ssh-keygen生成RSA密钥和公钥

cluster_run_all_nodes "hostname; ssh-keygen -q -t rsa  -N \"\" -f  ~/.ssh/id_rsa"

输出示例:

[root@JY-DB bin]# cluster_run_all_nodes "hostname ; ssh-keygen -q -t rsa  -N \"\" -f  ~/.ssh/id_rsa"
root@jy-db's password:
JY-DB
root@jy-db2's password:
JY-DB2

如果配置有误,或者清除ssh互信的当前所有配置信息:

cluster_run_all_nodes "hostname ; rm -rf ~/.ssh"
rm -rf ~/.ssh

4.2 将所有的公钥文件汇总到一个总的授权key文件中

在192.168.56.102执行汇总:

编辑脚本内容:

IP_NET="192.168.56."
for((i=102;i<=103;i++))
do
ssh $IP_NET$i cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
echo Summarize ssh info from $IP_NET$i into a single file.
done

注意:IP_NET是定义网段的变量,for循环包含了整个集群的IP范围,根据实际情况修改。

上述脚本内容是可以直接拷贝执行的,结果示例:

[root@JY-DB ~]# IP_NET="192.168.56."
[root@JY-DB ~]# for((i=102;i<=103;i++))
> do
> ssh $IP_NET$i cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> echo Summarize ssh info from $IP_NET$i into a single file.
> done
root@192.168.56.102's password:
Summarize ssh info from 192.168.56.102 into a single file.
root@192.168.56.103's password:
Summarize ssh info from 192.168.56.103 into a single file.

出于安全性考虑,将这个授权key文件赋予600权限:

chmod 600 ~/.ssh/authorized_keys

4.3 将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去

cluster_copy_all_nodes ~/.ssh/authorized_keys ~/.ssh/

4.4 验证ssh互信

节点1运行,都不输入密码返回主机名和时间即可:

cluster_run_all_nodes "hostname;date"

至此,ssh集群间的互信已经配置完成。

但为了更加灵活的再其他节点也可以用到我们自定义的脚本,我们还可以做以下工作:

同步拷贝节点1的配置文件到其他节点:

cluster_copy_all_nodes ~/.bash_profile ~/
cluster_copy_all_nodes /etc/hosts /etc
cluster_copy_all_nodes /usr/local/bin/cluster_copy_all_nodes /usr/local/bin/
cluster_copy_all_nodes /usr/local/bin/cluster_run_all_nodes /usr/local/bin/

这时任意登录其他节点,也可以使用cluster_run_all_nodes验证ssh互信了:

cluster_run_all_nodes "hostname;date"

Linux快速配置集群ssh互信的更多相关文章

  1. Linux 使用ansible配置集群间互信

    安装pip $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 $ sudo python get-pip.py # ...

  2. Linux 搭建Hadoop集群 成功

    内容基于(自己的真是操作步骤编写) Linux 搭建Hadoop集群---Jdk配置 Linux 搭建Hadoop集群 ---SSH免密登陆 一:下载安装 Hadoop 1.1:下载指定的Hadoop ...

  3. Linux下Ganglia集群监控安装、配置笔记

    http://www.blogjava.net/henry14/archive/2011/12/17/ganglia.html 枪声依旧 Linux下Ganglia集群监控安装.配置笔记 Gangli ...

  4. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  5. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

  6. Linux+Apache+Tomcat集群配置

    参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...

  7. Linux环境MySQL集群配置

    一.介绍 ======== 这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽 然这是基于2台服务器的MySQL ...

  8. Linux 搭建Hadoop集群 ----workcount案例

    在 Linux搭建集群---JDK配置 Linux搭建集群---SSH免密登陆 Linux搭建集群---集群搭建成功 的基础上实现workcount案例 注意 虚拟机三台启动集群(自己亲自搭建) 1. ...

  9. Linux - redis哨兵集群实例

    目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...

随机推荐

  1. webform 上传

    要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.value.le ...

  2. 自己写的几个android自定义组件

    http://www.see-source.com/androidwidget/list.html 多多指点,尤其是自定义组件的适配问题,希望能有更好的方法

  3. 【noip】noip201503求和(市赛后公布)

    3. 求和 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 题目描述   一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n.每个格子 ...

  4. 利用js来实现文字的滚动(也就是我们常常见到的新闻版块中的公示公告)

    首先先看一下大致效果图(因为是动态的,在页面无法显示出来) 具体的实现代码如下: 1.首先是css代码: <style type="text/css"> body,ul ...

  5. 游戏编程技巧 - Subclass Sandbox

    Subclass Sandbox 使用场景 你正在开发一款类似LOL的游戏,里面有许多英雄角色,你决定把这些英雄类交给小弟们实现.因为在这些英雄中,释放放技能时,有的要使用粒子系统造成炫酷的效果,有的 ...

  6. Web方式预览Office/Word/Excel/pdf文件解决方案

    最近在做项目时需要在Web端预览一些Office文件,经过在万能的互联网上一番搜索确定并解决了. 虽然其中碰到的一些问题已经通过搜索和自己研究解决了,但是觉得有必要将整个过程记录下来,以方便自己以后查 ...

  7. Visual Studio 2015 CTP6 发布

    微软发布ASP.NET 5 支持在Windows.Mac和Linux上构建程序,Visual Studio 2015 CTP6(社区预览版)现已发布了.感兴趣的朋友们可以登录官网下载[http://w ...

  8. Css 动画的回调

    在做项目中经常会遇到使用动画的情况.以前的情况是用js写动画,利用setTimeout函数或者window.requestAnimationFrame()实现目标元素的动画效果.虽然后者解决了刷新频率 ...

  9. WPF布局之让你的控件随着窗口等比放大缩小,适应多分辨率满屏填充应用

    一直以来,我们设计windows应用程序,都是将控件的尺寸定好,无论窗体大小怎么变,都不会改变,这样的设计对于一般的应用程序来说是没有问题的,但是对于一些比较特殊的应用,比如有背景图片的,需要铺面整个 ...

  10. quick-cocos2d-x 2.2.3 rc版本中 crypto.md5file() 的C++实现在ANDROID上有BUG

    原来的版本是用fopen打开文件的,如果要从ANDROID的APK中取文件,直接就洗白了修改如下 void CCCrypto::MD5File(const char* path, unsigned c ...