Linux下实现SSH Key 批量分发管理

本文介绍了一种通过SSH免密码登录实现文件批量分发的方法。该方法利用shell脚本fenfa.sh完成从本地到多台远程服务器的文件分发工作,并通过sudo权限提升进行文件复制。文章还强调了中心分发服务器的安全管理措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)首先先实现ssh免密码登陆,可参考http://blog.youkuaiyun.com/qq_30256711/article/details/78537472

2) 编辑分发脚本fenfa.sh

#!/bin/bash

file="$1"
remotedir="$2"

. /etc/init.d/functions

if [ $# -ne 2 ]
then
  echo "sh $0 arg1 arg2"
  exit 1
fi

for n in 29 30
do
    /usr/bin/scp -rp $file test@192.168.200.1$n:~ >/dev/null 2>&1 &&\
    /usr/bin/ssh -t test@192.168.200.1$n sudo /bin/cp -r ~/$file $remotedir
    if [ $? -eq 0 ]
    then
      action "scp $file to $remotedir is ok" /bin/true
    else
      action "scp $file to $remotedir is fail" /bin/false
    fi

done

测试脚本

[test@A ~]$ ./fenfa.sh ./hosts /opt/
Connection to 192.168.200.129 closed.
scp ./hosts to /opt/ is ok                                 [  OK  ]
Connection to 192.168.200.130 closed.
scp ./hosts to /opt/ is ok                                 [  OK  ]

总结:
一定要使用统一的账户进行分发管理,可通过普通用户进行sudo提权进行分发,先把文件拷贝到服务器家目录,然后sudo提权

利用root做ssh key验证也是未尝不可,有利也有弊,好处是简单方便,坏处是风险极大,一旦攻破了分发服务器,其他服务器也跟着遭殃。

重要安全思想:

一定要管理好中心分发服务器,因为他的权限很大,很重要
1.一定要取消中心分发服务器的外网IP
2.开启防火墙禁止SSH对外用户登录,并仅给某一台后端无外网机器A访问,然而这台后端机器A
依然没外网IP,仅能通过VPN连接,这样就比较安全了


### 推荐的Linux SSH批量连接工具 对于Linux系统中的SSH批量连接需求,有多种工具可以满足这一要求。以下是几种值得考虑的选择: #### 1. 使用 `sshpass` 实现自动化密码输入 当面对多个服务器需要通过相同的用户名和密码登录时,`sshpass` 提供了一种简单的方法来实现无交互式的SSH连接。安装后可以通过命令行指定密码并执行远程操作。 ```bash sudo apt-get install sshpass # Debian/Ubuntu systems yum install epel-release # CentOS/RHEL systems yum install sshpass # After enabling EPEL repository on CentOS/RHEL ``` 之后可利用如下方式批量分发公钥至多台主机[^3]: ```bash for host in $(cat hosts.txt); do \ echo "Adding key to $host"; \ sshpass -p 'your_password' ssh-copy-id user@$host; \ done; ``` #### 2. NextSSH – 多平台图形界面客户端 NextSSH 不仅适用于Windows、macOS 和 Linux操作系统,而且内置了许多实用特性如SFTP支持、远程文件编辑器以及数据同步等功能。这使得它成为一个非常全面且易于使用的解决方案[^2]。 然而需要注意的是,虽然NextSSH提供了丰富的GUI体验,但对于完全无人值守的任务来说可能不是最佳选择,因为其主要设计目的是为了提供更好的用户体验而非批处理能力。 #### 3. Fabric 或 Ansible 自动化框架 如果目标不仅仅是简单的SSH会话管理而是更复杂的部署流程,则应该考虑采用Fabric或Ansible这样的配置管理和应用程序部署工具。它们允许编写Python脚本来定义任务序列,并能够轻松地跨众多节点运行这些任务而不需要人工干预。 例如,在Fabric中创建一个名为deploy.py 的文件: ```python from fabric import task @task def deploy(c): c.run('echo Hello World') ``` 然后可以在本地机器上执行该任务到所有目标服务器上: ```bash fab --hosts=server1,server2,... deploy ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值