linux 设置主机互信

2016-10-13 15:06:27 chenghuikai 阅读数 19792
  • Linux主机名配置

    1.从0开始能成功搭建大数据平台 2.各个技术组件从版本选择、兼容性、下载、安装、配置和测试运行,都会一一讲解到位,不会出现跳讲和断讲 3.各个技术组件使用较新版本,如JDK1.8、CDH5.10、Spark2.3.0

    180人学习 杨俊
    免费试看

环境

node1:192.168.3.20
node2:192.168.3.21

用到的命令
  • ssh-keygen:创建公钥和密钥,会生成id_rsa和id_rsa.pub两个文件
  • ssh-copy-id:把本地的公钥复制到远程主机的authorized_keys文件(不会覆盖文件,是追加到文件末尾),并且会设置远程主机用户目录的.ssh和.ssh/authorized_keys权限
    权限为:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

下面开始

1.在两台机器上生成各自的key文件

 [root@192.168.3.20]#ssh-keygen -t rsa       #下面一直按回车就好
 [root@192.168.3.21]#ssh-keygen -t rsa

2.用ssh-copy-id 把公钥复制到远程主机上,命令也要

[root@192.168.3.20]#ssh-copy-id -i  .ssh/id_rsa.pub root@192.168.3.21
[root@192.168.3.21]#ssh-copy-id -i  .ssh/id_rsa.pub root@192.168.3.20

注:如果不是默认的端口,可以这样写
ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 2022 root@192.168.3.21”

现在就可以直接登录了

[root@192.168.3.20]#ssh root@192.168.3.21,试试吧

说明:

  • 上面是以root用户配置互信,如果想要其它用户,可以切到相应的用户下执行命令即可
  • 如果单纯的只需要单向信任,在一台机器上执行命令就可以了,比如说node1连接node2,不用密码的话,在node1上执行命令就可以了
  • 3.也可以把ip地址和主机名对应关系加到 /etc/hosts里 这样直接ssh 主机名就可以了(eg:192.168.3.21 node2 加到hosts里就可以了
2018-04-11 21:04:20 dreamandxiaochouyu 阅读数 2216
  • Linux主机名配置

    1.从0开始能成功搭建大数据平台 2.各个技术组件从版本选择、兼容性、下载、安装、配置和测试运行,都会一一讲解到位,不会出现跳讲和断讲 3.各个技术组件使用较新版本,如JDK1.8、CDH5.10、Spark2.3.0

    180人学习 杨俊
    免费试看

▉只要3台主机配置互信的问题能够解决,那么N台主机再配置互信就是同一个道理,2台配置互信更是不在话下。


▉假定现在有3台主机:host01、host02、host03

  三台主机IP分别为:192.168.30.128、192.168.30.129、192.168.30.130


▉原理

  A主机的~目录下面有一个隐藏目录.ssh里面有一个档案叫做authorized_keys,只要这个档案里面有B主机的公钥,那么A就信任B了,值得注意的是此时B并不信任A,如果要B也信任A,必须把A的公钥追加到B的authorized_keys中去。所以,只要3台主机每一台的authorized_keys都有其它两台的公钥,那么3台就相互信任了。


▉方法

  先把3台主机的公钥文件id_rsa.pub文件都生成出来,然后把host01、host02的这两个公钥都远程拷贝到host03中并且命名为pub-1、pub-2,然后把host03自己的公钥id_rsa.pub、pub-1、pub-2这三个整合到一起,写进host3:~/.ssh/authorized_keys中。最后把host03中已经整合好的authorized_keys分发给host01和host02即可(注意存放路径必须为~/.ssh/)。

  

▉具体操作步骤如下:

▉首先为每一台主机都生成公钥,一路回车,遇y按y即可,每做完一台,都会在~/.ssh目录下面生成一个名为id_rsa.pub的公钥。

[root@host01]# ssh-keygen -t rsa

[root@host02]# ssh-keygen -t rsa

[root@host03]# ssh-keygen -t rsa


前两个主机的id_rsa.pub都复制一份到第三台主机,并且取不同的名字加以区分

[root@host01]# scp ~/.ssh/id_rsa.pub 192.168.30.130:~/.ssh/pub-1

[root@host02]# scp ~/.ssh/id_rsa.pub 192.168.30.130:~/.ssh/pub-2


▉将第三台主机的pub-1和pub-2以及它自己的pub均追加到authorized_keys中做一次整合

[root@host03]# cat ~/.ssh/id_rsa.pub>>authorized_keys

[root@host03]# cat ~/.ssh/pub-1>>authorized_keys

[root@host03]# cat ~/.ssh/pub-2>>authorized_keys


在第三台主机上分发已经整合完毕的autuorized_keys

[root@host03]# scp ~/.ssh/authorized_keys 192.168.30.128:~/.ssh/authorized_keys

[root@host03]# scp ~/.ssh/authorized_keys 192.168.30.129:~/.ssh/authorized_keys



----------------------------------------------------------------------------------------------------------------

▉验证是否配置成功

----------------------------------------------------------------------------------------------------------------

[root@host01]# ssh 192.168.20.129 date

[root@host01]# ssh 192.168.20.130 date

[root@host02]# ssh 192.168.20.130 date


如果能在不需要手动输入密码的情况下输出时间信息,就表明互信配置成功


2019-12-28 15:34:52 hmxz2nn 阅读数 54
  • Linux主机名配置

    1.从0开始能成功搭建大数据平台 2.各个技术组件从版本选择、兼容性、下载、安装、配置和测试运行,都会一一讲解到位,不会出现跳讲和断讲 3.各个技术组件使用较新版本,如JDK1.8、CDH5.10、Spark2.3.0

    180人学习 杨俊
    免费试看

本文主要参考:Linux快速配置集群ssh互信

在对多个Linux主机进行管理,特别是如大规模数据库集群进行管理时,有必要同时向集群中的每个主机发送命令。当主机数量特别多的时候,一个一个来执行还是很麻烦的,所以有必要通过脚本来执行。本文就分享了这样的脚本。当然,针对这一场景,更强大的工具是ansible,具体可参考:ansible服务部署与使用

关于Linux建立多主机互信,可参考之前的博客:Centos系统下建立多机互信

配置节点1的/etc/hosts文件及环境变量

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

192.168.56.102 node1
192.168.56.103 node2

配置节点1的环境变量:

vi ~/.bash_profile
export NODE_LIST='node1 node2'
source ~/.bash_profile
集群拷贝脚本与命令集中发送脚本

脚本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
配置整个集群间的ssh互信

1.在各节点通过ssh-keygen生成RSA密钥和公钥

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

根据提示输入各主机密码。
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范围,根据实际情况修改。
执行上面的这个脚本后,可以实现将所有的公钥文件汇总到node1。
3.将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去

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

根据提示输入各个主机的密码。自此,集群主机互信建立完成

验证ssh互信

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

cluster_run_all_nodes "hostname;date"

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

同步拷贝节点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互信了。

2019-05-06 21:51:49 sixintadi888 阅读数 432
  • Linux主机名配置

    1.从0开始能成功搭建大数据平台 2.各个技术组件从版本选择、兼容性、下载、安装、配置和测试运行,都会一一讲解到位,不会出现跳讲和断讲 3.各个技术组件使用较新版本,如JDK1.8、CDH5.10、Spark2.3.0

    180人学习 杨俊
    免费试看

【环境准备】
192.168.1.2(node1) centos7系统
192.168.1.3(node2)centos7系统
【生成公私秘钥】
分别在两台服务器上执行下面命令
# ssh-keygen -t rsa
后面一直按“enter”键,直到退出为止;至此,生成本机的公钥和私钥,
查看私秘钥
# cd /root/.ssh (此处是root用户,如果是普通用户到自己用户的根(家)目录下查看—/home/XX/.ssh)
# ls -al

authorized_keys   id_rsa(私钥)    id_rsa.pub(公钥)  known_hosts(添加别的服务器的公钥)  

【添加互信】
在node1上执行下面命令
# ssh-copy-id -i root@192.168.1.3
输入密码即可
在node2上执行下面命令
# ssh-copy-id -i root@192.168.1.2
输入密码即可
【验证是否免密登录】
在node1上使用ssh登录node2
# ssh root@192.168.1.3
如果不用输入密码直接登录到node2上,
表明node2上免密node1成功
(同理验证node2访问node1)

2015-05-27 21:19:01 u014659656 阅读数 1638
  • Linux主机名配置

    1.从0开始能成功搭建大数据平台 2.各个技术组件从版本选择、兼容性、下载、安装、配置和测试运行,都会一一讲解到位,不会出现跳讲和断讲 3.各个技术组件使用较新版本,如JDK1.8、CDH5.10、Spark2.3.0

    180人学习 杨俊
    免费试看

linux配置ssh互信

 

什么叫linux主机互信:

Linux主机互信,就是主机之间相互信任,什么是信任,就像人与人之间一样,不需要利用金钱等(除了你自己以外其他的东西)来取得对方的信任,大家相互信任对方,不需要额外的凭证。就好比你,你爸,你妈,你姐之间,不需要钱来维持你们之间的信任。同样,linux主机之间也是,我们从一台主机登陆到另一台时,往往需要验证你,需要你输入用户密码,才允许你登陆。这样在多台机器之间来回切换登陆就会频繁输入密码,非常麻烦,看看,一切的根源来自于互不信任。可不可以不用输入密码就直接登陆呢?答案是可以,但条件是主机之间相互信任对方。

因此ssh互信就诞生了。我们在主机值之间配置了公钥认证后,也就是取得信任之后,就不必再输入密码了(当然实际上是ssh使用rsa算法帮你完成了验证过程)。

公钥认证的基本思想:

对信息的加密和解密采用不同的key,这对key分别称作private key和publickey,其中,public key存放在欲登录的服务器上,而privatekey为特定的客户机所持有。当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取,一旦这样的事情发生,就需要各服务器更换受信的publickey列表。

 使用过github的用户就会知道,用git登陆远程仓库github的时候,也会有公钥认证(当然是首次使用git时),首次使用git,就会要求你在客户端生成一个rsa key pairs,一个public-key存放于id_rsa.pub,一个private-key存放于id_rsa,并且上传你的公钥public-key到github上,这样做的目的就是你可以取得github的信任,也就是github信任你,下次你登录的时候,github会使用你上传的公钥来验证你的身份,从而不用输入密码。当然这个过程只是单向的信任,也就是github现在信任你,但是你并没有建立对github的信任,需要建立么,其实没有必要,因为github是不会主动向你发出请求的,大多数情况是你需要主动向github发送请求。

知道了单向信任,那么相互信任就简单了,就是主机之间的公钥都要告知对方,这样才能相互信任,你信任我,我信任你。那么,以下就是互信建立的步骤了:

 

 

配置ssh互信的步骤如下:

    1. 首先,在要配置互信的机器上,生成各自的经过认证的key文件;

    2. 其次,将所有的key文件汇总到一个总的认证文件中;

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

    4. 验证互信。

    在主机名为node1,node2,node3上以相同的用户test创建ssh互信。

 

 

1.在每个节点上创建 RSA密钥和公钥

使用test用户登陆

mkdir~/.ssh

chmod700 ~/.ssh

cd~/.ssh

ssh-keygen-t rsa

 

2.整合公钥文件

在node1上执行以下命令

sshnode1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

sshnode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

sshnode3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod600 ~/.ssh/authorized_keys

 

3.分发整合后的公钥文件

在node1上执行以下命令

scp~/.ssh/authorized_keys  node2:~/.ssh/

scp~/.ssh/authorized_keys  node3:~/.ssh/

 

4.测试ssh互信

在各个节点上运行以下命令,若不需要输入密码就显示系统当前日期,就说明SSH互信已经配置成功了。

sshnode1 date

sshnode2 date

sshnode3 date

 

 一下是我的实验

[ocdc@HBBDC-Interface-1 .ssh]$ ssh-keygen-t rsa

Generating public/private rsa key pair.

Enter file in which to save the key(/home/ocdc/.ssh/id_rsa):

/home/ocdc/.ssh/id_rsa already exists.

Overwrite (y/n)? y

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in/home/ocdc/.ssh/id_rsa.

Your public key has been saved in/home/ocdc/.ssh/id_rsa.pub.

The key fingerprint is:

b3:e7:19:4b:e1:59:0d:b5:4d:ba:04:89:81:9d:37:01ocdc@HBBDC-Interface-1

The key's randomart image is:

+---[RSA 2048]----+

|        oE=oo. .|

|       . + +o = |

|          ...+ .|

|             + . |

|       S . . o  |

|        + +     |

|       . *      |

|        + +     |

|         +      |

+-----------------+

然后在各个需要互信的接口机上重复以上步骤生成认证文件

回到接口机1,

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.21 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.21's password:

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.22 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.22's password:

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.23 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.23's password:

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.24 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.24's password:

[ocdc@HBBDC-Interface-1 .ssh]$ catauthorized_keys

可以看到所有主机的公钥都存在了authorized_keys中。接下来就是分发这个整合后的证书了。

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.21:~/.ssh/

ocdc@10.31.100.21's password:

authorized_keys                                                                                  100% 3219     3.1KB/s   00:00   

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.22:~/.ssh/

ocdc@10.31.100.22's password:

authorized_keys                                                                                  100% 3219     3.1KB/s   00:00   

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.23:~/.ssh/

ocdc@10.31.100.23's password:

authorized_keys                                                                                  100% 3219     3.1KB/s   00:00    

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.24:~/.ssh/

ocdc@10.31.100.24's password:

authorized_keys                                                                                  100% 3219     3.1KB/s   00:00

任务完成,验证是否成功

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.21 date

Wed May 27 20:39:39 CST 2015

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.22 date

Wed May 27 20:39:45 CST 2015

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.23 date

Wed May 27 20:39:51 CST 2015

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.24 date

Wed May 27 20:39:55 CST 2015

linux-ssh互信配置

阅读数 621