Skip to main content

OpenSSH 资源同步工具

一个用于从阿里云镜像同步 OpenSSH 资源的 Python 工具,支持定时检测和版本过滤。

功能特性

  • ✅ 从阿里云镜像同步 OpenSSH 资源
  • ✅ 支持设置检测间隔时间(最小12小时)
  • ✅ 版本过滤(只同步大于等于 openssh-10.2p1 的版本)
  • ✅ 只同步 tar.gz 文件
  • ✅ 无限循环后台守护进程
  • ✅ Docker 容器化支持
  • ✅ clang编译器优化构建
  • ✅ 命令行接口,易于使用
  • ✅ 基于 pyproject.toml 最新标准
  • ✅ systemd 服务管理(注册、状态查看、删除)
  • ✅ 自动服务注册功能
  • ✅ 服务健康状态监控

安装

从 PyPI 安装

pip install openssh-synchronization

使用清华大学 PyPI 镜像源加速安装

# 临时使用清华镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openssh-synchronization

# 或者设置清华镜像源为默认源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install openssh-synchronization

Docker 安装

从远程仓库拉取镜像

# 从腾讯云容器镜像服务拉取镜像
docker pull ccr.ccs.tencentyun.com/liumou/openssh-synchronization:latest

运行容器

# 直接运行(推荐使用环境变量配置)
docker run -d \
  --name openssh-sync \
  -v /path/to/downloads:/data/openssh \
  -e CHECK_INTERVAL=24 \
  -e DOWNLOAD_DIR=/data/openssh \
  -e MIN_VERSION=10.3.0 \
  -e DEBUG=false \
  ccr.ccs.tencentyun.com/liumou/openssh-synchronization:latest

查看日志

# 查看容器日志
docker logs openssh-sync

# 实时查看日志
docker logs -f openssh-sync

快速开始

查看帮助

openssh-sync --help

列出可用版本

openssh-sync list

输出示例:

🔍 正在获取OpenSSH版本列表...
📋 找到 3 个符合条件的版本:
------------------------------------------------------------
🔸 openssh-10.2p1
   文件: openssh-10.2p1.tar.gz
   大小: 1.9 MB

🔸 openssh-10.1p1
   文件: openssh-10.1p1.tar.gz
   大小: 1.9 MB

💡 提示: 使用 'openssh-sync sync' 命令下载这些版本

image-20251110-084439

执行一次性同步

# 使用默认配置
openssh-sync sync

# 自定义参数
openssh-sync sync --interval 48 --dir /opt/openssh --min-version 10.3.0

启动定时同步服务

# 启动守护进程
openssh-sync daemon --interval 24 --dir /tmp/openssh

# 使用配置文件
openssh-sync daemon --config-file config.json

# 启动守护进程并自动注册为systemd服务
openssh-sync daemon --auto-register

systemd 服务管理

# 注册为systemd服务
openssh-sync register

# 强制重新注册服务
openssh-sync register --force

# 查看服务状态
openssh-sync status

# 删除服务
openssh-sync unregister

生成配置文件

# 生成默认配置文件
openssh-sync config

# 生成自定义配置文件
openssh-sync config --interval 48 --dir /opt/openssh --extract --output my-config.json

配置说明

环境变量配置

OpenSSH同步工具支持通过环境变量配置参数,优先级:命令行参数 > 环境变量 > 默认值

环境变量 说明 示例值 默认值
CHECK_INTERVAL 检查间隔时间(小时) 24 24
DOWNLOAD_DIR 下载目录路径 /tmp/openssh ./downloads
MIN_VERSION 最小版本要求 10.2.1 10.2.1
DEBUG 启用调试模式 true false

使用示例:

# 通过环境变量配置
CHECK_INTERVAL=36 DOWNLOAD_DIR=/tmp/openssh MIN_VERSION=10.3.1 DEBUG=true openssh-sync sync

# 容器环境推荐用法
docker run -d \
  -e CHECK_INTERVAL=24 \
  -e DOWNLOAD_DIR=/data/openssh \
  -e MIN_VERSION=10.3.0 \
  -e DEBUG=false \
  openssh-sync

命令行参数

参数 说明 示例值 默认值
--interval, -i 检查间隔时间(小时) 24 24
--dir, -d 下载目录路径 /tmp/openssh ./downloads
--min-version 最小版本要求 10.2.1 10.2.1
--debug 启用调试模式 --debug False
--config-file 配置文件路径 /etc/openssh-sync.json None

配置文件格式

生成的 JSON 配置文件示例:

{
  "check_interval": 24,
  "download_dir": "./downloads",
  "min_version": [10, 2, 1],
  "mirror_url": "https://mirrors.aliyun.com/openssh/portable",
  "timeout": 30,
  "debug": false
}

systemd 服务配置

OpenSSH同步工具注册为systemd服务后,会创建以下配置:

服务文件位置: /etc/systemd/system/openssh-sync.service

服务配置内容:

[Unit]
Description=OpenSSH Synchronization Service

[Service]
ExecStart=/usr/local/bin/openssh-sync daemon
WorkingDirectory=/opt/openssh
User=root
Group=root
Restart=always

[Install]
WantedBy=multi-user.target

服务管理命令:

# 启动服务
sudo systemctl start openssh-sync

# 停止服务
sudo systemctl stop openssh-sync

# 重启服务
sudo systemctl restart openssh-sync

# 查看服务状态
sudo systemctl status openssh-sync

# 启用开机自启
sudo systemctl enable openssh-sync

# 禁用开机自启
sudo systemctl disable openssh-sync

# 查看服务日志
sudo journalctl -u openssh-sync -f

API 使用

基本用法

from openssh_sync import Config, OpenSSHSync

# 创建配置
config = Config(
    check_interval=24,           # 检查间隔:24小时
    download_dir="/tmp/openssh"  # 下载目录
)

# 创建同步实例
sync_tool = OpenSSHSync(config)

# 执行同步
success = sync_tool.sync_files()

if success:
    print("同步成功")
else:
    print("同步失败")

高级用法

from openssh_sync import create_sync, create_config_from_dict

# 从字典创建配置
config_dict = {
    'check_interval': 48,
    'download_dir': '/opt/openssh',
    'min_version': [10, 3, 0],
    'debug': True
}

config = create_config_from_dict(config_dict)
sync_tool = create_sync(config)

# 获取文件列表
files = sync_tool.get_file_list()
for file_info in files:
    print(f"版本: {file_info['version']}, 文件: {file_info['filename']}")

# 启动定时同步
sync_tool.start_scheduled_sync()

项目结构

openssh-synchronization/
├── pyproject.toml          # 项目配置
├── README.md               # 项目说明
├── LICENSE                 # 许可证
├── .gitignore             # Git忽略文件
└── openssh_sync/          # 主程序包
    ├── __init__.py        # 包初始化
    ├── main.py            # 主程序逻辑
    ├── config.py          # 配置管理
    ├── utils.py           # 工具函数
    └── cli.py             # 命令行接口

开发

安装开发依赖

pip install -e .[dev]

运行测试

pytest

代码格式化

black openssh_sync/
isort openssh_sync/

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。

贡献

欢迎提交 Issue 和 Pull Request!

技术支持

如有问题,请提交 Issue 或联系开发者。

Metadata

Release files for openssh-synchronization 1.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openssh-synchronization 1.1.8
File Size Uploaded
openssh_synchronization-1.1.8.tar.gz 86.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openssh-synchronization 1.1.8
File Interpreter ABI Platform
openssh_synchronization-1.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 120.6 kB

Release files / openssh_synchronization-1.1.8.tar.gz

Download URL openssh_synchronization-1.1.8.tar.gz
Size 86.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bc028941314e60d5f86dc4115ddf7cb2981f15e6f4507d9c5ee89b1789aa6823
BLAKE2b-256 checksum
How to use checksums
5712448eceed5decb5bf1cb28bfb56e39fdee4894179deeb8e38146c9fc90eed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.2

Release files / openssh_synchronization-1.1.8-py3-none-any.whl

Download URL openssh_synchronization-1.1.8-py3-none-any.whl
Size 34.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a9e57e139c08db1ee9c0a41ae4710a9faaaca8b74460e6741b29e7e46e06b8a
BLAKE2b-256 checksum
How to use checksums
d2e19a335f0f64c91923862f4ab5f0cae821e63edcffcb4e9c724fa72f50a538
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.2

Release history Release notifications | RSS feed

This release

1.1.8 This release

2 release files

1.1.7

2 release files

1.1.4

2 release files

1.1.2

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page