469 字
2 分钟
互信脚本1.0

1.检查版本安装 expect -v yum install expect

2.创建一个脚本 sshtrust.sh,将以上内容写入脚本!

DEST_USER=1PASSWORD=1 PASSWORD=2 HOSTS_FILE=3if[3 if [ # -ne 3 ]; then echo “Usage:” echo “0remoteUserremotePasswordhostsFile"exit1fiif["0 remoteUser remotePassword hostsFile" exit 1 fi if [ "{DEST_USER}” != “root” ]; then cd /home/”${DEST_USER}”/ || return fi

SSH_DIR=~/.ssh SCRIPT_PREFIX=./tmp echo ===========================

1. prepare directory .ssh#

mkdir SSHDIRchmod700SSH_DIR chmod 700 SSH_DIR

2. generat ssh key#

TMP_SCRIPT=SCRIPT_PREFIX.sh { echo "#!/usr/bin/expect" echo "spawn ssh-keygen -b 1024 -t rsa" echo "expect *key*" echo "send \r" } >>TMP_SCRIPT if [ -f SSHDIR/idrsa];thenecho"expectverwrite"echo"sendy"˚>>SSH_DIR/id_rsa ]; then { echo "expect *verwrite*" echo "send y\r" } >>TMP_SCRIPT fi { echo “expect passphrase” echo “send \r” echo “expect *again:” echo “send \r” echo “interact” } >>$TMP_SCRIPT

chmod +x $TMP_SCRIPT

/usr/bin/expect TMPSCRIPTrmrfTMP_SCRIPT rm -rf TMP_SCRIPT

3. generat file authorized_keys#

cat SSHDIR/idrsa.pub>>SSH_DIR/id_rsa.pub >>SSH_DIR/authorized_keys

4. chmod 600 for file authorized_keys#

chmod 600 $SSH_DIR/authorized_keys echo ===========================

5. copy all files to other hosts#

for ip in (<"(<"{HOSTS_FILE}”); do if [ “xip"!="x"];thenechoTMPSCRIPT=ip" != "x" ]; then echo ------------------------- TMP_SCRIPT={SCRIPT_PREFIX}.ip.sh # check known_hosts val=(ssh-keygen -F “ip")if["x{ip}") if [ "xval” == “x” ]; then echo “ipnotinip not in SSH_DIR/known_hosts, need to add” val=(sshkeyscan"(ssh-keyscan "{ip}” 2>/dev/null) if [ “xval"=="x"];thenecho"sshkeyscanval" == "x" ]; then echo "ssh-keyscan ip failed!” else echo “val">>{val}" >>SSH_DIR/known_hosts fi fi echo “copy SSHDIRtoSSH_DIR to ip” { echo ”#!/usr/bin/expect” echo “spawn scp -r SSHDIRSSH_DIR DEST_USER@ip: /"echo"expectassword"echo"sendip:~/" echo "expect *assword*" echo "send PASSWORD\r” echo “interact” } >“$TMP_SCRIPT”

chmod +x "$TMP_SCRIPT"
/usr/bin/expect "$TMP_SCRIPT"
rm -rf "$TMP_SCRIPT"
echo "copy done."
fi

done

6. date ssh#

for ip in (<"(<"HOSTS_FILE”); do if [ “xip" != "x" ]; then { echo "#!/usr/bin/expect" echo "spawn ssh DEST_USER@ip date" echo "expect *yes*" echo "send yes\r" echo "interact" } >"TMP_SCRIPT”

chmod +x "$TMP_SCRIPT"
/usr/bin/expect "$TMP_SCRIPT"
rm -rf "$TMP_SCRIPT"
echo "copy done."
fi

done

3.支持多台主机进行互信,创建一个 sshhostList.cfg 文件,将需要配置互信的主机IP写入: vi sshhostList.cfg

10.211.55.100 10.211.55.101 10.211.55.102 复制

4.执行如下命令互信: sh sshtrust.sh 互信用户 互信用户密码 sshhostList.cfg

5.修改 SSH 服务的配置文件 /etc/ssh/sshd_config 。这个文件定义了 SSH 服务的配置。 AllowUsers 参数可以用来限制哪些用户被允许通过 SSH 登录到系统。在你的配置中, admin, root, oracle 和 grid 这四个用户被允许登录。 Port 参数定义了 SSH 服务监听的端口,你这里设置的是22,这是 SSH 的默认端口。 以下是如何编辑并保存 /etc/ssh/sshd_config 文件的步骤:

vi /etc/ssh/sshd_config

AllowUsers admin root oracle grid Port 22

sudo systemctl restart sshd

互信脚本1.0
https://blog.newworld.help/posts/互信脚本10/
作者
勇敢DBA不怕困难
发布于
2024-07-18
许可协议
CC BY-NC-SA 4.0