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


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

相关文章
|
9月前
|
网络安全 开发工具 git
配置本地环境以管理Git多账户SSH连接的方法
通过以上步駟设置后, 您可以轻松管理多個 Git 账户并且根据不同项目需求切换 SSH 密匙进行版本控制操作。
1145 20
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
677 24
|
11月前
|
网络安全 开发工具 git
GitHub 多账户 SSH 配置指南
本文介绍了如何在同一台电脑上配置多个 GitHub 账户的 SSH 密钥。内容包括:检查现有密钥、生成新的 SSH 密钥、配置 SSH config 文件、将公钥添加到 GitHub、验证 SSH 连接、设置 Git 用户信息、创建工作区目录、使用不同账户克隆仓库,以及为每个仓库配置独立的用户信息等步骤。通过这些操作,可以实现在不同项目中使用不同的 GitHub 账户进行提交和管理。
818 0
|
Ubuntu Linux 网络安全
如何在Linux中更改主机名?修改主机名最新方法
本期教程将指导您如何在Linux系统中更改主机名。主机名是Linux系统的常用功能,用于识别服务器,帮助区分不同服务器,并与网络进程和其他应用程序协同工作。教程涵盖显示当前主机名的方法(通过`hostname`命令),以及在CentOS 7、Debian 9和Ubuntu 16.04及以上版本中更改主机名的步骤(使用`hostnamectl set-hostname`命令)。对于其他Linux版本,可编辑`/etc/hostname`文件实现更改。记得重启相关服务或服务器以使更改生效!
2965 12
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
583 10
|
安全 网络协议 Linux
Linux查 ssh端口号和服务状态
本指南详细介绍如何检查SSH服务的运行状态,包括通过进程命令验证服务启动、查看监听端口、检测系统服务状态以及防火墙配置。同时提供安全建议,如修改默认端口、禁用密码登录和定期更新系统,确保SSH服务稳定与安全。适用于不同Linux发行版(Systemd/SysVinit),帮助用户全面排查和优化SSH配置。
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
1546 7
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
9月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
984 1
二、Linux文本处理与文件操作核心命令
|
9月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
583 137