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


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

相关文章
|
8月前
|
网络安全 开发工具 git
配置本地环境以管理Git多账户SSH连接的方法
通过以上步駟设置后, 您可以轻松管理多個 Git 账户并且根据不同项目需求切换 SSH 密匙进行版本控制操作。
946 20
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
768 3
Linux系统初始化脚本
|
8月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
696 9
|
8月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
702 2
|
10月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
1127 0
|
12月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
454 29
|
10月前
|
网络安全 开发工具 git
GitHub 多账户 SSH 配置指南
本文介绍了如何在同一台电脑上配置多个 GitHub 账户的 SSH 密钥。内容包括:检查现有密钥、生成新的 SSH 密钥、配置 SSH config 文件、将公钥添加到 GitHub、验证 SSH 连接、设置 Git 用户信息、创建工作区目录、使用不同账户克隆仓库,以及为每个仓库配置独立的用户信息等步骤。通过这些操作,可以实现在不同项目中使用不同的 GitHub 账户进行提交和管理。
737 0
|
安全 Linux Shell
Linux SSH(Secure Shell)服务
Linux SSH提供安全网络协议,使用公钥加密技术确保远程服务传输安全。OpenSSH是实现SSH服务的免费开源工具,允许用户加密连接远程登录Linux服务器执行任务。SSH比Telnet更安全,防止数据被截获。SSH还支持端口转发和隧道,广泛应用于系统管理和网络维护,是安全远程访问服务器的重要工具。
267 1
|
监控 数据可视化 安全
Linux——怎样使用SSH服务实现远程UI界面本地显示
需求场景 最近几天需要实现软件的远程监控,但是实际场景又不能使用向日葵、VNC、AnyDesk、以及其他的监视软件,并且软件的整体设计也没有这块的数据上行设计。
1504 0
|
监控 安全 Ubuntu
在Linux中,如何进行SSH服务配置?
在Linux中,如何进行SSH服务配置?