讲师中心 微信公众号

工具推荐

视频效率加速
立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

Ssh Deploy Skill

Polar Sponsor
爱发电 赞助
.NET 9.0

通用 SSH 远程部署工具,支持多服务器管理、批量部署、国内镜像优化的安装脚本模板,支持远程...

SSH 部署 STell. 一个通用的SSH远程部署工具,用于管理 Linux 服务器,并进行批量操作,文件传输和模板化的软件安装

功能概述

SSH 部署 STell. 一个通用的SSH远程部署工具,用于管理 Linux 服务器,并进行批量操作,文件传输和模板化的软件安装是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

SSH 部署技能(SSH Deploy Skill)

一款通用的 SSH 远程部署工具,用于批量管理 Linux 服务器,支持远程命令执行、文件传输及基于模板的软件安装。针对国内网络环境深度优化,内置阿里云、清华大学等国内镜像源配置。

快速开始

1. 初始设置

cd /root/.openclaw/workspace/skills/ssh-deploy-skill

# 自动初始化(检查依赖、生成配置)
bash scripts/setup.sh

# 若自动初始化失败,手动安装依赖
pip3 install --user paramiko

2. 配置服务器(两种方式)

方式 A:使用 inventory.json(传统方式)

编辑 ~/.ssh-deploy/inventory.json,或通过 CLI 添加服务器:

python3 scripts/inventory.py add web-01 
  --host 192.168.1.101 
  --user root 
  --ssh-key ~/.ssh/id_rsa 
  --groups production,web 
  --tags "aliyun"

配置位置:所有服务器配置均保存于 ~/.ssh-deploy/inventory.json 中。

方式 B:直接读取 ~/.ssh/config(新特性!)

若你已在 ~/.ssh/config 中定义了 Host 条目,则可 无需额外配置直接使用:

# ~/.ssh/config 示例
Host dy-c1
    HostName 101.126.92.30
    User root
    IdentityFile ~/.ssh/mypc_id_rsa
    Port 22

# 直接使用主机名执行命令
python3 scripts/deploy.py exec dy-c1 "ls -la /opt"

该工具将自动解析 SSH 配置中的 Host、HostName、Port、User 和 IdentityFile 字段。

注意:从 SSH 配置加载的服务器为 只读状态,不会写入 inventory。如需添加分组或标签,请导入: inventory.py add --from-ssh-config。

3. 执行远程命令

# 单台服务器
python3 scripts/deploy.py exec web-01 "uptime && df -h"

# 按分组批量执行
python3 scripts/deploy.py exec group:production "docker ps"

# 按标签批量执行
python3 scripts/deploy.py exec tag:aliyun "systemctl status nginx"

# 串行执行(避免高负载)
python3 scripts/deploy.py exec group:large "apt update" --sequential

4. 文件传输

# 上传文件
python3 scripts/deploy.py upload web-01 ./nginx.conf /etc/nginx/nginx.conf

# 批量上传至分组内所有服务器
python3 scripts/deploy.py upload group:web ./config.json /opt/app/config.json

# 下载文件
python3 scripts/deploy.py download web-01 /var/log/nginx/access.log ./logs/

5. 使用模板安装软件

templates/ 目录下的所有模板均已预配置国内镜像源。

# 安装 Docker(自动启用国内镜像加速)
cat templates/install_docker.sh | python3 scripts/deploy.py exec tag:docker "bash -s"

# 安装 MySQL(密码通过环境变量传入)
MYSQL_ROOT_PASSWORD=YourPass123 cat templates/install_mysql.sh | 
  python3 scripts/deploy.py exec db-01 "bash -s"

# 基础环境初始化(系统更新 + 镜像配置)
cat templates/base_setup.sh | python3 scripts/deploy.py exec group:all "bash -s"

📦 安装脚本模板

模板 软件 国内镜像 环境变量
base_setup.sh 基础环境 ✅ -
install_git.sh Git ❌ GIT_USER_NAME, GIT_USER_EMAIL
install_docker.sh Docker CE + 加速器 ✅ -
install_mysql.sh MySQL 8.0 ✅ MYSQL_ROOT_PASSWORD
install_postgresql.sh PostgreSQL 15 ✅ PG_VERSION
install_nginx.sh Nginx ❌ -
install_nodejs.sh Node.js ✅(npm) NODE_VERSION
install_redis.sh Redis ❌ -
install_python.sh Python ✅(pip) PYTHON_VERSION

注意:所有新增的服务器配置均保存至 ~/.ssh-deploy/inventory.json。

🎯 核心功能

服务器清单管理(inventory.py)

# 列出全部服务器
python3 scripts/inventory.py list

# 按分组筛选
python3 scripts/inventory.py list --group production

# 按标签筛选
python3 scripts/inventory.py list --tag aliyun

# 添加服务器
python3 scripts/inventory.py add SERVER_NAME 
  --host IP_OR_HOSTNAME 
  --port 22 
  --user USERNAME 
  --ssh-key PATH_TO_KEY 
  --groups GROUP1,GROUP2 
  --tags TAG1,TAG2 
  --desc "description"

目标语法(在 deploy.py 中使用):

  • server-name —— 指定单台服务器
  • group:groupname —— 指定分组内所有服务器
  • tag:tagname —— 指定拥有该标签的所有服务器
  • * —— 所有服务器

远程命令执行(deploy.py)

# 并行批量执行(默认行为)
python3 scripts/deploy.py exec group:web "docker pull nginx"

# 串行执行(适用于大批量操作或避免过载)
python3 scripts/deploy.py exec group:large "apt upgrade -y" --sequential

# 使用环境变量
export MYSQL_VERSION="8.0"
cat templates/install_mysql.sh | python3 scripts/deploy.py exec db-01 "bash -s"

文件操作

# 上传(单台)
python3 scripts/deploy.py upload web-01 ./local.conf /etc/app/conf.d/conf.conf

# 批量上传
python3 scripts/deploy.py upload group:web ./nginx.conf /etc/nginx/nginx.conf

# 下载
python3 scripts/deploy.py download web-01 /var/log/app.log ./logs/

🌏 国内网络优化

镜像配置

本技能默认使用 阿里云镜像源,并自动配置以下内容:

  • Ubuntu/Debian → mirrors.aliyun.com
  • CentOS/RHEL → mirrors.aliyun.com
  • npm → registry.npmmirror.com(淘宝镜像)
  • pip → mirrors.aliyun.com/pypi/simple
  • Docker → 中科大、网易、百度镜像源
  • Go → goproxy.cn
  • Maven → 阿里云仓库

详细配置说明见:references/mirrors.md

一键镜像配置

# 在所有服务器上配置系统镜像源
cat templates/base_setup.sh | python3 scripts/deploy.py exec group:all "bash -s"

# 手动配置 Docker 镜像(如有需要)
cat <<'EOF' | python3 scripts/deploy.py exec group:all "bash -s"
cat > /etc/docker/daemon.json <

🔒 安全最佳实践

  1. SSH 密钥管理

    • 强制使用密钥认证,禁用密码登录
    • 密钥权限应设为 chmod 600 ~/.ssh/id_rsa
    • 不同环境建议使用独立密钥
  2. 最小权限原则

    • 创建专用部署用户(避免使用 root)
    • 配置免密 sudo(仅授予必要命令权限)
    • 服务端 sshd_config 中设置:PermitRootLogin no,PasswordAuthentication no
  3. 敏感数据保护

    • 切勿在 inventory.json 中存储密码
    • 密码类参数请通过环境变量传递(例如 MYSQL_ROOT_PASSWORD)
    • 配置文件权限应设为 640,属主为 root:appgroup
  4. 审计追踪

    • 保留全部部署日志
    • 记录每次执行的命令、目标服务器、时间戳与执行结果

完整安全指南见:references/best-practices.md

🐛 故障排查

快速诊断

# 1. 网络连通性测试
ping 
telnet  22

# 2. 手动 SSH 测试
ssh -i ~/.ssh/id_rsa root@ "uptime"

# 3. 查看连接详情(含错误输出)
python3 scripts/deploy.py exec  "uptime" 2>&1

# 4. 验证密钥权限
ls -la ~/.ssh/id_rsa*

常见问题

现象 解决方案
连接被拒绝 / 超时 检查服务器运行状态、SSH 服务是否启动、防火墙或安全组策略
Permission denied (publickey) 确认公钥已正确写入服务器的 ~/.ssh/authorized_keys,且私钥权限为 600
sudo: a password is required 配置免密 sudo 或改用 root 用户执行
Command not found 使用绝对路径,或确保 PATH 环境变量包含对应命令路径
国内下载缓慢 运行 base_setup.sh 配置镜像源,详见 docs/mirrors.md

详细排错手册见:references/troubleshooting.md

📊 批量操作示例

场景 1:新服务器初始化

# 1. 将服务器加入清单
python3 scripts/inventory.py add web-01 --host 1.2.3.101 --groups web --tags production

# 2. 基础环境初始化(镜像源、常用工具)
cat templates/base_setup.sh | python3 scripts/deploy.py exec web-01 "bash -s"

# 3. 安装核心软件
cat templates/install_docker.sh | python3 scripts/deploy.py exec web-01 "bash -s"
cat templates/install_nginx.sh | python3 scripts/deploy.py exec web-01 "bash -s"

# 4. 上传应用配置
python3 scripts/deploy.py upload web-01 ./app-config.json /opt/app/config.json

# 5. 启动应用
python3 scripts/deploy.py exec web-01 "docker-compose up -d"

场景 2:多服务器滚动更新

# 金丝雀发布:先更新首批节点
cat deploy-v2.sh | python3 scripts/deploy.py exec tag:"canary" "bash -s"

# 检查监控指标...

# 全量发布
cat deploy-v2.sh | python3 scripts/deploy.py exec tag:production "bash -s"

场景 3:配置同步

# 同步配置文件至所有 Web 服务器
python3 scripts/deploy.py upload group:web ./nginx.conf /etc/nginx/nginx.conf

# 批量重启服务
python3 scripts/deploy.py exec group:web "nginx -t && systemctl reload nginx"

场景 4:健康检查与监控

# 收集所有服务器运行状态
python3 scripts/deploy.py exec "*" "uptime" > uptime-$(date +%F).log

python3 scripts/deploy.py exec "*" "df -h" > disk-$(date +%F).log

python3 scripts/deploy.py exec "*" "docker ps --format 'table {{.Names}}t{{.Status}}'" > containers-$(date +%F).log

🔄 CI/CD 集成

GitLab CI 示例

stages:
  - deploy

deploy_production:
  stage: deploy
  script:
    - pip3 install --user paramiko
    - export TARGET="group:production"
    - cat deploy.sh | python3 skills/ssh-deploy-skill/scripts/deploy.py exec "$TARGET" "bash -s"
  only:
    - main

GitHub Actions 示例

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install paramiko
        run: pip3 install paramiko
      - name: Deploy to servers
        run: |
          cat deploy.sh | python3 skills/ssh-deploy-skill/scripts/deploy.py exec "group:staging" "bash -s"

🛠️ 开发者指南

新增安装模板

  1. 在 templates/ 目录下新建 .sh 文件
  2. 以 #!/bin/bash 开头,并包含 set -e
  3. 检测操作系统类型并适配逻辑(参考已有模板)
  4. 使用环境变量传递参数,禁止硬编码敏感信息
  5. 在适用场景中加入国内镜像源配置

自定义脚本结构

#!/bin/bash
set -e

echo "===== Installing XXX ====="

# 1. 检测操作系统
if [ -f /etc/debian_version ]; then
    OS="debian"
elif [ -f /etc/redhat-release ]; then
    OS="redhat"
else
    echo "Unsupported OS"
    exit 1
fi

# 2. 配置国内镜像源(如需)
# ...

# 3. 安装软件
if [ "$OS" = "debian" ]; then
    apt-get update
    apt-get install -y xxx
elif [ "$OS" = "redhat" ]; then
    yum install -y xxx
fi

# 4. 启动服务
systemctl start xxx
systemctl enable xxx

echo "XXX installation complete!"

直接使用 Python API

from inventory import Inventory, Server
from deploy import SSHDeployer

# 加载服务器清单
inv = Inventory()
server = inv.get_server("web-01")

# 创建部署器实例
deployer = SSHDeployer()

# 执行命令
result = deployer.execute(server, "docker ps")
print(result.success, result.output)

# 上传文件
res = deployer.upload_file(server, "./local.conf", "/etc/conf.d/local.conf")

deployer.close()

📚 补充文档

详细文档(部分含中文):

  • README.md —— 完整使用指南与 API 参考
  • README.zh-CN.md —— 全中文手册
  • references/mirrors.md —— 国内镜像源配置详情
  • references/best-practices.md —— 最佳实践与代码示例
  • references/troubleshooting.md —— 完整故障排查手册

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

目录

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

0

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

0

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

0

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn