Linux 多台主机配置 ssh 互信脚本

简介: 互信是指配置免密登录另一台主机,常用于自动化脚本!

互信是指配置免密登录另一台主机,常用于自动化脚本!


以下分享个互信脚本:


DEST_USER=$1PASSWORD=$2HOSTS_FILE=$3if [ $#-ne3 ]; thenecho"Usage:"echo"$0remoteUser remotePassword hostsFile"exit1fiif [ "${DEST_USER}"!="root" ]; thencd/home/"${DEST_USER}"/||returnfiSSH_DIR=~/.sshSCRIPT_PREFIX=./tmpecho===========================#1.preparedirectory .sshmkdir$SSH_DIRchmod700$SSH_DIR#2.generatsshkeyTMP_SCRIPT=$SCRIPT_PREFIX.sh  {
echo"#!/usr/bin/expect"echo"spawn ssh-keygen -b 1024 -t rsa"echo"expect *key*"echo"send \r"  } >>$TMP_SCRIPTif [ -f$SSH_DIR/id_rsa ]; then    {
echo"expect *verwrite*"echo"send y\r"    } >>$TMP_SCRIPTfi  {
echo"expect *passphrase*"echo"send \r"echo"expect *again:"echo"send \r"echo"interact"  } >>$TMP_SCRIPTchmod+x$TMP_SCRIPT/usr/bin/expect$TMP_SCRIPTrm-rf$TMP_SCRIPT#3.generatfileauthorized_keyscat$SSH_DIR/id_rsa.pub>>$SSH_DIR/authorized_keys#4.chmod600forfileauthorized_keyschmod600$SSH_DIR/authorized_keysecho===========================#5.copyallfilestootherhostsforipin$(<"${HOSTS_FILE}"); doif [ "x$ip"!="x" ]; thenecho-------------------------TMP_SCRIPT=${SCRIPT_PREFIX}.$ip.sh#checkknown_hostsval=$(ssh-keygen-F"${ip}")
if [ "x$val"=="x" ]; thenecho"$ipnot in $SSH_DIR/known_hosts, need to add"val=$(ssh-keyscan"${ip}"2>/dev/null)
if [ "x$val"=="x" ]; thenecho"ssh-keyscan $ipfailed!"elseecho"${val}">>$SSH_DIR/known_hostsfifiecho"copy $SSH_DIRto $ip"      {
echo"#!/usr/bin/expect"echo"spawn scp -r  $SSH_DIR$DEST_USER@$ip:~/"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."fidone#6.datesshforipin$(<"$HOSTS_FILE"); doif [ "x$ip"!="x" ]; then      {
echo"#!/usr/bin/expect"echo"spawn ssh $DEST_USER@$ipdate"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."fidone


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


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


10.211.55.10010.211.55.10110.211.55.102


执行如下命令互信:


shsshtrust.sh互信用户互信用户密码sshhostList.cfg


执行完成后,即配置互信成功!

相关文章
|
13天前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
|
13天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
18天前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
17天前
|
Linux
探索Linux操作系统:命令行与脚本编程基础
【8月更文挑战第31天】在这篇文章中,我们将一起踏上一段旅程,深入探索Linux操作系统的奥秘。通过学习命令行的使用和编写简单的脚本,你将能够更高效地与你的计算机进行交流。无论你是新手还是有经验的用户,本文都将为你打开一扇通往Linux世界的大门。准备好了吗?让我们开始吧!
|
19天前
|
运维 监控 Linux
深入理解Linux系统运维:命令行与脚本的奥秘
【8月更文挑战第30天】在Linux的世界里,命令行是运维人员的灵魂之窗。掌握命令行,就像握住了一把钥匙,能开启系统管理的宝藏箱。本文将带你走进Linux的命令行世界,通过实际代码示例,解锁那些高效管理和维护系统的秘籍。你将学到不仅仅是命令本身,更是如何将这些命令编织成强大的脚本,让日常的运维工作变得游刃有余。准备好跟随我的步伐,一起深入探索Linux命令行与脚本的奥秘吧!
|
20天前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
44 0
|
21天前
|
Linux 网络安全
Linux开启ssh
Linux开启ssh
30 0
|
26天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本检测磁盘使用率?
在Linux中,如何使用shell脚本检测磁盘使用率?
|
Ubuntu Linux 网络安全
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
本文介绍了Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录。
2672 1
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
|
1月前
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
37 0