服务器间免密登陆和分发脚本

一、无密钥配置

(1)进入到我的home目录

cd  ~/.ssh

(2)生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上(会被拷贝到目标服务器的~/.ssh/authorized_keys中)

ssh-copy-id hadoop103

ssh-copy-id hadoop104

ssh文件夹下的文件功能解释

(1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)

(2)id_rsa :生成的私钥

(3)id_rsa.pub :生成的公钥

(4)authorized_keys :存放授权过得无秘登录服务器公钥

原理:

免密登陆命令:

ssh root@hadoop103

 

二、 rsync远程同步工具

主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

(1)查看rsync使用说明

man rsync | more

(2)基本语法

rsync -rvl     $pdir/$fname         $user@hadoop$host:$pdir

命令 命令参数 要拷贝的文件路径/名称   目的用户@主机:目的路径

选项

-r 递归

-v 显示复制过程

-l 拷贝符号链接

(3)案例实操

把本机/opt/tmp目录同步到hadoop103服务器的root用户下的/opt/tmp目录

rsync -rvl /opt/tmp/*  root@hadoop103:/opt/tmp

三、编写集群分发脚本xsync

1)需求分析:循环复制文件到所有节点的相同目录下。

(1)原始拷贝:

rsync  -rvl     /opt/module    root@hadoop103:/opt/

(2)期望脚本:

xsync + 要同步的文件名称

(3)在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行。

2)案例实操:

(1)在/usr/local/bin目录下创建xsync文件,文件内容如下:

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi


#2 获取文件名称

p1=$1

fname=`basename $p1`

echo fname=$fname



#3 获取上级目录到绝对路径

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir


#4 获取当前用户名称

user=`whoami`


#5 循环

for((host=103; host<105; host++)); do

        #echo $pdir/$fname $user@hadoop$host:$pdir

        echo --------------- hadoop$host ----------------

        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir

done

(2)修改脚本 xsync 具有执行权限

chmod a+x xsync

(3)调用脚本形式:

xsync myfile

四、 编写命令分发脚本xcall

1)需求分析:在所有主机上同时执行相同的命令

xcall + 命令

2具体实现

(1)在/usr/local/bin目录下创建xcall文件,文件内容如下:

#!/bin/bash

pcount=$#

if((pcount==0));then

        echo no args;

        exit;

fi


echo -------------localhost----------

$@

for((host=101; host<=108; host++)); do

        echo ----------hadoop$host---------

        ssh hadoop$host $@
done

(2)修改脚本 xcall 具有执行权限

 chmod a+x xcall

(3)调用脚本形式: xcall 操作命令

xcall rm -rf /opt/tmp/profile

五、可能遇到的问题

私钥是正确的,看提示信息应该是权限设置的问题。
私钥的权限只能是700,执行下面命令修改之后就可以

chmod -R 700 ~/.ssh/*

# .ssh 是我的私钥目录,-R递归改完全部的秘钥的权限

猜你喜欢

转载自blog.csdn.net/qq_31024823/article/details/88019056
今日推荐