分享一个Linux批量管理脚本--批量建立服务器之间SSH免密

原创
ithorizon 6个月前 (10-17) 阅读数 48 #Linux

批量确立服务器之间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免密登录。通过该脚本,可以方便地在服务器集群中实现高效、保险的交互。在实际应用中,可以凭借需求对脚本进行优化和扩展。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门