drone-ssh/README.zh-cn.md
appleboy 1dfeaffef3
docs: add Table of Contents to all language README files
- Add a Table of Contents section to the English, Simplified Chinese, and Traditional Chinese README files

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2025-04-26 22:00:28 +08:00

4.1 KiB

drone-ssh

English | 繁體中文 | 简体中文

sshlog

GitHub tag GoDoc Lint and Testing codecov Go Report Card Docker Pulls

Drone 插件,可通过 SSH 在远程主机执行命令。使用方法和可用选项请参考官方文档

注意:请将 Drone 的 image config 路径更新为 appleboy/drone-sshplugins/ssh 已不再维护。

demo

目录

重大变更

v1.5.0:将命令超时参数更改为 Duration 格式。设置示例如下:

pipeline:
  scp:
    image: ghcr.io/appleboy/drone-ssh
    settings:
      host:
        - example1.com
        - example2.com
      username: ubuntu
      password:
        from_secret: ssh_password
      port: 22
-     command_timeout: 120
+     command_timeout: 2m
      script:
        - echo "Hello World"

构建或下载二进制文件

可在发布页面下载预编译的二进制文件,支持以下操作系统:

  • Windows amd64/386
  • Linux arm/amd64/386
  • macOS (Darwin) amd64/386

如已安装 Go,可执行:

go install github.com/appleboy/drone-ssh@latest

或使用以下命令手动构建二进制文件:

export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=0
export GO111MODULE=on

go test -cover ./...

go build -v -a -tags netgo -o release/linux/amd64/drone-ssh .

Docker

可使用以下命令构建 Docker 镜像:

make docker

使用方法

在工作目录下执行:

docker run --rm \
  -e PLUGIN_HOST=foo.com \
  -e PLUGIN_USERNAME=root \
  -e PLUGIN_KEY="$(cat ${HOME}/.ssh/id_rsa)" \
  -e PLUGIN_SCRIPT=whoami \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  ghcr.io/appleboy/drone-ssh

通过文件路径挂载密钥

请确保已在项目设置中启用 trusted 模式(适用于 Drone 0.8 版本)。

trusted mode

.drone.yml 配置文件的 volumes 部分挂载私钥:

pipeline:
  ssh:
    image: ghcr.io/appleboy/drone-ssh
    host: xxxxx.com
    username: deploy
+   volumes:
+     - /root/drone_rsa:/root/ssh/drone_rsa
    key_path: /root/ssh/drone_rsa
    script:
      - echo "test ssh"

详情请参考 此 issue comment

配置说明

更多示例和完整配置选项请参考 DOCS.md

配置选项来源如下:

  1. 内置 drone-ssh 默认值。详见 main.go CLI Flags
  2. PLUGIN_ENV_FILE 环境变量指定的 dotenv 文件。
  3. .drone.yml Drone 配置文件。

后面的来源会覆盖前面的设置。例如,.env 文件中的 PORT 会覆盖 main.go 的默认值。