分享一个Linux批量管理脚本--批量建立服务器之间SSH免密
原创批量确立服务器之间SSH免密登录
随着云计算和虚拟化技术的成长,越来越多的企业起初采用分布式部署架构。在服务器集群中,服务器之间的交互变得尤为重要。SSH(Secure Shell)协议是一种常用的网络协议,用于计算机之间的保险通信和数据传输。为了减成本时间服务器之间的交互快速,通常需要确立SSH免密登录。本文将介绍一个Linux批量管理脚本,用于批量确立服务器之间SSH免密登录。
脚本功能概述
本脚本可以实现以下功能:
1. 自动生成SSH密钥对;
2. 将公钥复制到目标服务器;
3. 在目标服务器上设置SSH免密登录;
4. 验证SSH免密登录是否成就。
脚本环境要求
1. Linux操作系统;
2. SSH客户端工具(如OpenSSH);
3. Python 2.7或Python 3.x。
脚本实现步骤
1. **生成SSH密钥对**
在本地主机上生成SSH密钥对,公钥和私钥分别存储在`~/.ssh/id_rsa.pub`和`~/.ssh/id_rsa`。
bash
ssh-keygen -t rsa -b 2048
2. **编写Python脚本**
创建一个名为`ssh_keys.py`的Python脚本,内容如下:
python
import subprocess
import os
# 目标服务器列表
hosts = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
# 主机名
hostname = 'yourhostname'
# 生成SSH密钥对
key_path = os.path.join(os.path.expanduser('~'), '.ssh')
if not os.path.exists(key_path):
os.makedirs(key_path)
os.chdir(key_path)
if not os.path.exists('id_rsa'):
subprocess.run(['ssh-keygen', '-t', 'rsa', '-b', '2048'])
# 将公钥复制到目标服务器
for host in hosts:
subprocess.run(['ssh-copy-id', '-i', 'id_rsa.pub', hostname, '@' + host])
# 设置SSH免密登录
for host in hosts:
subprocess.run(['ssh', hostname, '@' + host, 'echo "Host * StrictHostKeyChecking no" >> ~/.ssh/config'])
# 验证SSH免密登录
for host in hosts:
subprocess.run(['ssh', hostname, '@' + host, 'echo "SSH免密登录成就"'])
3. **运行脚本**
在终端中运行脚本:
bash
python ssh_keys.py
4. **检查SSH免密登录**
在目标服务器上尝试使用SSH登录:
bash
ssh yourhostname@192.168.1.1
如果出现提示输入密码,则描述SSH免密登录挫败;如果直接登录成就,则描述SSH免密登录成就。
脚本优化与注意事项
1. **优化目标服务器列表**
在脚本中,目标服务器列表是通过硬编码的行为定义的。在实际应用中,可以将其存储在配置文件或数据库中,以便于管理和扩展。
2. **处理SSH免密登录挫败的情况**
在脚本中,如果SSH免密登录挫败,则不会继续执行后续操作。可以通过添加异常处理机制,记录挫败的服务器信息,并继续尝试其他服务器。
3. **保险注意事项**
1. 将私钥文件`id_rsa`设置为仅所有者可读写,防止他人获取私钥;
2. 在公钥复制到目标服务器时,确保目标服务器上的`~/.ssh/authorized_keys`文件中包含正确的公钥;
3. 在目标服务器上设置SSH免密登录时,注意配置文件`~/.ssh/config`中的`StrictHostKeyChecking`选项,防止中间人攻击。
总结
本文介绍了一个Linux批量管理脚本,用于批量确立服务器之间SSH免密登录。通过该脚本,可以方便地在服务器集群中实现高效、保险的交互。在实际应用中,可以凭借需求对脚本进行优化和扩展。