drone-ssh/README.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.2 KiB

drone-ssh

English | 繁體中文 | 简体中文

sshlog

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

A Drone plugin for executing commands on remote hosts via SSH. For usage instructions and a list of available options, please refer to the documentation.

Note: Please update your Drone image config path to appleboy/drone-ssh. The plugins/ssh image is no longer maintained.

demo

Table of Contents

Breaking Changes

As of v1.5.0, the command timeout flag has changed to use the Duration format. See the following example:

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"

Build or Download a Binary

Pre-compiled binaries are available on the releases page, supporting the following operating systems:

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

If you have Go installed:

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

Or build the binary manually with the following commands:

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

Build the Docker image with the following command:

make docker

Usage

Run from your working directory:

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

Mount Key from File Path

Make sure to enable trusted mode in your project settings (for Drone 0.8 version).

trusted mode

Mount the private key in the volumes section of your .drone.yml config:

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"

See details in this issue comment.

Configuration

See DOCS.md for examples and full configuration options.

Configuration options are loaded from multiple sources:

  1. Hardcoded drone-ssh defaults. See main.go CLI Flags for more information.
  2. From a dotenv file at a path specified by the PLUGIN_ENV_FILE environment variable.
  3. From your .drone.yml Drone configuration.

Later sources override earlier ones. For example, if PORT is set in an .env file committed in the repository or created by previous test steps, it will override the default set in main.go.