• 配置ssh免密钥登陆多台从机


    配置ssh免密钥登陆多台从机

    在布置集群时常常需要通过ssh来登陆多台从机,如果用手动配置的办法去配置多台主机就会比较费时费力,本文通过简单的脚本来配置ssh登陆多台主机

    主节点kube1的配置

    配置主机名

    在/etc/hosts 文件中输入各个机子的ip与主机名,随后将这份文件复制到各个主机的/etc/hosts文件中

    cat >> /etc/hosts <<-EOF
    10.173.38.49    	  	 kube5
    10.173.38.48     	 	 kube4 
    10.173.38.47     	 	 kube3
    10.173.38.46     	 	 kube2
    10.173.38.45     		 kube1
    EOF
    

    10.173.38.45 是 主节点kube1的内网IP,其他节点的ip可通过ifconfig查看。

    创建一个工作目录,并命名为init_public_key,随后进入该目录

    mkdir init_public_key
    cd  init_public_key
    

    创建 public_hostname 文件

    cat > public_hostname <<-EOF
    10.173.38.49    	  	 kube5
    10.173.38.48     	 	 kube4 
    10.173.38.47     	 	 kube3
    10.173.38.46     	 	 kube2
    10.173.38.45     		 kube1
    EOF
    

    创建主机公钥匙

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  
     cat ~/.ssh/id_dsa.pub > $(pwd)/id_rsa.pub_kube1
    

    创建从节点配置脚本set_public_key.sh,并添加执行权限

    cat > set_public_key.sh <<-EOF
    #!/bin/bash
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && 
    cat ~/id_rsa.pub_kube1 >> ~/.ssh/authorized_keys && 
    mv /usr/local/ssh_config ~/.ssh/config && 
    sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
    chmod 655 .ssh/authorized_keys
    hostnamectl set-hostname xxxxxx 
    cat public_hostname >> /etc/hosts
    EOF
    
    chmod +x set_public_key.sh
    
    

    set_public_key.sh 文件中 的 hostnamectl set-hostname xxxxxx
    中的 ‘xxxxxx’,是你要设置的从节点的主机名。

    创建 public_key_set.tar.gz ,用于传输到各个从节点

    tar -zcvf public_key_set.tar.gz    ./*
    

    查看init_public_key 目录组成

    
    [root@kube1 init_public_key]# tree ../init_public_key
    ../init_public_key
    ├── id_rsa.pub_kube1
    ├── public_hostname
    ├── public_key_set.tar.gz
    └── set_public_key.sh
    
    0 directories, 4 files
    

    用scp命令,将 public_key_set.tar.gz拷贝至各个从节点的root用户home目录下

    scp public_key_set.tar.gz  root@kube2:/root/  &&
    scp public_key_set.tar.gz  root@kube3:/root/  &&
    scp public_key_set.tar.gz  root@kube4:/root/  &&
    scp public_key_set.tar.gz  root@kube5:/root/  &&
    

    至此主节点的配置已完成,接下来我们用ssh来登陆各个从节点进行配置

    从节点的配置(以kube2为例)

    登陆kube2并解压文件

    [root@kube1 init_public_key]# ssh kube2  # 第一次登陆需要密码登陆
    [root@kube2 ~]# tar -zxvf public_key_set.tar.gz 
    ./id_rsa.pub_kube1
    ./public_hostname
    ./set_public_key.sh
    

    修改set_public_key.sh中的‘xxxxxx’为‘kube2’

    [root@kube2 ~]# vim set_public_key.sh 
    
    
    #!/bin/bash
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && 
    cat ~/id_rsa.pub_kube1 >> ~/.ssh/authorized_keys && 
    mv /usr/local/ssh_config ~/.ssh/config && 
    sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
    chmod 655 .ssh/authorized_keys
    hostnamectl set-hostname kube2   # 修改这行 xxxxxx->kube2
    cat public_hostname >> /etc/hosts
    

    修改完后,直接执行 set_public_key.sh,即可完成将主节点kube1的公钥信息导入,并将自己主机名修改为kube2,以便后续主节点kube1可以通过ssh kube2免密钥登陆kube2。

    ./set_public_key.sh
    

    退出kube2,再登陆kube2,查看是否配置成功

    [root@kube2 ~]# exit
    登出
    Connection to kube2 closed.
    [root@kube1 ~]# ssh kube2
    Last login: Fri Sep 19 14:12:02 2017 from 10.173.38.45
    

    一般ssh 登陆的格式为 ssh user@Ip 在本文中我们默认的用户是root用户,使用 ssh IP的命令时,默认user用户为当前终端用户,即为root用户。

    这样,我们就能以极快速配置各个从节点的ssh免密钥登陆了。其他从节点的ssh免密钥登陆也如kube2一样配置。

  • 相关阅读:
    javascript对象继承的实现
    浏览器兼容问题汇总<转>
    DOM笔记
    Ajax日记
    学习态度
    项目1
    导航项目-整体布局
    有关布局
    导航项目开始
    windows 服务 定时程序 跑不出数据
  • 原文地址:https://www.cnblogs.com/Ethan2lee/p/7574714.html
Copyright © 2020-2023  润新知