1、本脚本为服务器用户间密码互信登录脚本
2、依赖
需要安装expect工具
3、使用
sh CreateUserssh.sh hadoop hadoop /home/hadoop/.ssh
三个带入参数
1)用户名
2)密码
3)用户ssh密钥路径
4、脚本内容
#!/bin/bash
####脚本变量
v_time=`date +"%Y%m%d:%H:%M:%S"`
v_date=`date +"%Y%m%d%H%M%S"`
user=$1
passw=$2
gpsshdir=$3
pwd_dir=`find / -name GPINSTALL  -type d 2>>/dev/null`
hostdir=$pwd_dir/hostconfig
h_hostfile=$hostdir/hostfile
gpcnfdir=$pwd_dir/gpconfig
scnf=$gpcnfdir/segment.cnf
logdir=$pwd_dir/gplog
log="$logdir/usersshkey-auto-$v_date.log"
####echo输出定义:INFO、ERROR、SUCESS
EchoInfo(){
    echo -e "$v_time,$1\033[30;34m[INFO]\033[0m--------------$2"
}
EchoError(){
    echo -e "$v_time,$1\033[30;31m[ERROR]\033[0m-------------$2"
}
EchoSucess(){
    echo -e "$v_time,$1\033[30;32m[SUCESS]\033[0m------------$2"
}
####全局调用函数
function JuState(){      ##状态判断函数
    if [ $1 -eq 0 ];then
        $2
    else
        $3
        $4
    fi
}
function Multinodeexec(){  ##ssh跳转执行函数
    for i in `cat $1`
    do
        ssh $i "
            $2
        "
    done
}
function NullValue(){    ##空值判断函数
    if [ ! "$1" ];then
        $2
        $3
    else
        $4
    fi
}
function CreateSshkeygen(){
    if [ -e $gpsshdir ];then
        rm -rf $gpsshdir
        ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
    else
        ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
        JuState $? "EchoSucess "ALL" "$user:Master:id_rsa创建成功"" "EchoError "ALL" "$user:Master:id_rsa创建失败"" "exit"
    fi
}
function ChecksshPasswd(){
    for i in `cat $1`;do
    ip=$i
expect <<EE
set timeout 5
spawn ssh-copy-id -i $ip
expect "Are you sure you want to continue connecting"
send "yes\r"
expect "*password"
send "$passw\r"
expect "#" {send "exit\r"}
EE
#    grep -w "Permission denied, please try again" $log >/dev/null
#    if [ $? -eq 0 ];then
#        EchoError "$ip" "root密码与配置文件不匹配,检查失败"
#        exit
#    else
#        EchoSucess "$ip" "root密码与配置文件匹配,检查通过"
#    fi
done
}
function Sshcopyid_rsa(){
    for i in `cat $scnf`;do
        scp $gpsshdir/* $i:~/.ssh
        JuState $? "EchoSucess "$i" "$user:shcopyidrsa成功"" "EchoError "$i" "请检查服务器$user密码是否与密码配置文件一致"" "exit"
    done
}
function CheckSSH(){
    for i in `cat $1`
    do
        ssh $i "ls -l"
        JuState $? "EchoSucess "$i" "$user:ssh免密检查通过"" "EchoError "$i" "$user:ssh免密检查失败"" "exit"
    done
}
function HostUserSSH(){
    CreateSshkeygen
    ChecksshPasswd      $h_hostfile
    Sshcopyid_rsa
    CheckSSH        $h_hostfile
}
HostUserSSH
5、运行日志
[hadoop@data0 dependsoft]$ sh CreateUserssh.sh hadoop hadoop /home/hadoop/.ssh
Generating public/private rsa key pair.
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
b7:4c:6e:ff:59:b1:fe:7c:80:8e:2d:c0:15:af:22:fb hadoop@data0
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|          .      |
|           o     |
|          . .    |
|       .S.o. . . |
|      . +=... . o|
|       o o=+   o.|
|      .  .o.o .+.|
|       .E  ...o.=|
+-----------------+
spawn ssh-copy-id -i 192.168.56.60
The authenticity of host '192.168.56.60 (192.168.56.60)' can't be established.
RSA key fingerprint is 03:8f:ff:28:24:90:87:30:54:1c:d2:04:7f:b3:24:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.60' (RSA) to the list of known hosts.
hadoop@192.168.56.60's password:
Now try logging into the machine, with "ssh '192.168.56.60'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
spawn ssh-copy-id -i 192.168.56.61
The authenticity of host '192.168.56.61 (192.168.56.61)' can't be established.
RSA key fingerprint is 03:8f:ff:28:24:90:87:30:54:1c:d2:04:7f:b3:24:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.61' (RSA) to the list of known hosts.
hadoop@192.168.56.61's password:
Now try logging into the machine, with "ssh '192.168.56.61'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
spawn ssh-copy-id -i 192.168.56.62
The authenticity of host '192.168.56.62 (192.168.56.62)' can't be established.
RSA key fingerprint is 03:8f:ff:28:24:90:87:30:54:1c:d2:04:7f:b3:24:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.62' (RSA) to the list of known hosts.
hadoop@192.168.56.62's password:
Now try logging into the machine, with "ssh '192.168.56.62'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
authorized_keys                                                                                                                                                                                         100%  394     0.4KB/s   00:00
id_rsa                                                                                                                                                                                                  100% 1675     1.6KB/s   00:00
id_rsa.pub                                                                                                                                                                                              100%  394     0.4KB/s   00:00
known_hosts                                                                                                                                                                                             100% 1185     1.2KB/s   00:00
20191031:16:30:28,192.168.56.61[SUCESS]------------hadoop:shcopyidrsa成功
authorized_keys                                                                                                                                                                                         100%  394     0.4KB/s   00:00
id_rsa                                                                                                                                                                                                  100% 1675     1.6KB/s   00:00
id_rsa.pub                                                                                                                                                                                              100%  394     0.4KB/s   00:00
known_hosts                                                                                                                                                                                             100% 1185     1.2KB/s   00:00
20191031:16:30:28,192.168.56.62[SUCESS]------------hadoop:shcopyidrsa成功
total 4
drwxr-xr-x 12 hadoop hadoop 4096 Oct 25 10:02 hadoop-2.8.5
20191031:16:30:28,192.168.56.60[SUCESS]------------hadoop:ssh免密检查通过
total 4
drwxr-xr-x 12 hadoop hadoop 4096 Oct 25 10:02 hadoop-2.8.5
20191031:16:30:28,192.168.56.61[SUCESS]------------hadoop:ssh免密检查通过
total 4
drwxr-xr-x 12 hadoop hadoop 4096 Oct 25 10:02 hadoop-2.8.5
20191031:16:30:28,192.168.56.62[SUCESS]------------hadoop:ssh免密检查通过
[hadoop@data0 dependsoft]$
[hadoop@data0 dependsoft]$
[hadoop@data0 dependsoft]$
[hadoop@data0 dependsoft]$
[hadoop@data0 dependsoft]$
[hadoop@data0 dependsoft]$ cd
[hadoop@data0 ~]$
[hadoop@data0 ~]$
[hadoop@data0 ~]$ ssh data0
The authenticity of host 'data0 (192.168.56.60)' can't be established.
RSA key fingerprint is 03:8f:ff:28:24:90:87:30:54:1c:d2:04:7f:b3:24:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'data0' (RSA) to the list of known hosts.
Last login: Thu Oct 31 16:27:37 2019 from data1
[hadoop@data0 ~]$ exit
logout
Connection to data0 closed.
[hadoop@data0 ~]$ ssh data1
The authenticity of host 'data1 (192.168.56.61)' can't be established.
RSA key fingerprint is 03:8f:ff:28:24:90:87:30:54:1c:d2:04:7f:b3:24:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'data1' (RSA) to the list of known hosts.
Last login: Thu Oct 31 16:25:28 2019 from data0
[hadoop@data1 ~]$ exit
logout
Connection to data1 closed.
[hadoop@data0 ~]$ ssh data2
The authenticity of host 'data2 (192.168.56.62)' can't be established.
RSA key fingerprint is 03:8f:ff:28:24:90:87:30:54:1c:d2:04:7f:b3:24:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'data2' (RSA) to the list of known hosts.
Last login: Thu Oct 31 16:27:28 2019 from data1
[hadoop@data2 ~]$ exit
logout
Connection to data2 closed.

Linux 服务器用户间ssh免密码登录的更多相关文章

  1. 多台CentOS服务器下实现SSH免密码登录

    ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd  /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...

  2. Linux多台服务器间SSH免密码登录配置

    SSH实现各个服务器间的文件相互备份,如运行scp命令,可以实现免密码登录,从而可以使用SHELL脚本实现一些自动化的处理. 假如A机要免密码登录B机,具体方法如下: 1.在A机运行:"ss ...

  3. linux下设置了SSH免密码登录但还是需要输入密码的解决办法

    今天在设置linux的免密码登录后,仍然需要输入密码,后来找到了原因,是因为用户没有权限修改.ssh目录下的know_hosts文件导致的. 具体情况是这样的: 在/home/username/.ss ...

  4. linux 服务器名 访问 shh免密码登录

    以根用户登录,或者登录后切换到根用户,然后在提示符下输入hostname命令,可以看出当前系统的主机名为localhost.localdomain.   更改/etc/sysconfig下的netwo ...

  5. Mac下到Linux主机ssh免密码登录

    最近忙得忘乎所以,写篇博客放松放松,RT,直接上命令好了 # Local ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub username@server:~/.ssh/ ...

  6. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  7. Linux 配置ssh 免密码登录

    在平常应用中,我们经常会登录到其他主机,比如说服务器,每次都需要用户名和密码. 我们可以通过ssh免密码登录服务器而不需要输入密码. 现在有一台ubuntu的阿里云服务器,称之为 server.  公 ...

  8. Mac ssh 免密码登录 Mac 或者 Linux

    最近在 Mac上操作另一台 Mac 和 Linux 服务器,每次输密码太麻烦.所以直接设置 ssh 免密码登录,省去输入密码的过程.先在本机执行 ls ~/.ssh 若不存在 id_rsa,id_rs ...

  9. linux实现ssh免密码登录

    linux实现ssh免密码登录 本地系统执行 ssh-keygen -t rsa 命令,生成密钥文件 在相应的目录下查看生成的密钥文件,其中:id_rsa为私钥文件,id_rsa.pub为公钥文件 本 ...

随机推荐

  1. javascript 代码实例

    数组去重 function unique(arr){ if(!Array.isArray(arr)){ console.log('type error!'); return; } arr = arr. ...

  2. Roads in the Kingdom CodeForces - 835F (直径)

    大意: 给定一个基环树, 求删除一条环上的边使得直径最小. 直径分两种情况 环上点延伸的树内的直径 两个环上点的树内深度最大的点匹配 第一种情况直接树形dp求一下, 第二种情况枚举删除的环边, 线段树 ...

  3. Spring Cloud Alibaba学习笔记(16) - Spring Cloud Gateway 内置的路由谓词工厂

    Spring Cloud Gateway路由配置的两种形式 Spring Cloud Gateway的路由配置有两种形式,分别是路由到指定的URL以及路由到指定的微服务,在上文博客的示例中我们就已经使 ...

  4. CCF 2016-04-2 俄罗斯方块

    CCF 2016-04-2 俄罗斯方块 题目 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者 ...

  5. SQL----EXISTS 关键字

    转自:http://blog.sina.com.cn/s/blog_65dbc6df0100mvfx.html 1.EXISTS基本意思 英语解释就是存在,不过他的意思也差不多,相当于存在量词'З'. ...

  6. UCOS内存管理

    STM32F10xxx内置64K字节的静态SRAM.它可以以字节.半字(16位)或全字(32位)访问 SRAM的起始地址是0x20000000 UCOSII //定义存储区 OS_MEM *DATA_ ...

  7. 判断是否发生url跳转

    url="https://www.baidu.com/" url='http://www.freebuf.com/fevents/133225.html' # 方法一:禁止跳转:a ...

  8. Android笔记(六十七) 自定义控件

    实际编程中,系统提供的控件往往无法满足我们的需求,一来是样子丑陋,二来是一些复杂的组合需要多次使用的话,每次都写一堆控件的组合会很耗费时间,所以我们将这些组件的组合自定义为一个新的控件,以后使用的时候 ...

  9. obj + mtl 格式说明

    OBJ(或 .OBJ)是一种开放的几何定义文件格式,最初由Wavefront Technologies公司开发,用以描述其Advanced Visualizer动画包.该格式已被其他3D图形应用供应商 ...

  10. hive 外部表和内部表的区别和相互转换

    Hive内部表和外部表区别 1.创建内部表时,内部表的数据文件是保存在指定的路径的:如若创建外部表,则只记录数据所在的路径,不会对数据位置做改变. 2.删除表的时候,内部表元数据和数据会跟着一起删除. ...