- Modify the `EnvVars` slice to include `INPUT_` prefix when needed - Remove unused environment variables from the `EnvVars` slice - Update the `EnvVars` slice to include `PROXY_` prefix when needed - Modify the `EnvVars` slice to include `PLUGIN_SSH_CIPHERS` as `PROXY_SSH_CIPHERS` - Modify the `EnvVars` slice to include `PLUGIN_PROXY_USE_INSECURE_CIPHER` as `PROXY_SSH_USE_INSECURE_CIPHER` - Modify the `EnvVars` slice to include `PLUGIN_PROXY_FINGERPRINT` as `PROXY_SSH_FINGERPRINT` - Remove the environment variable `PROXY_HOST` - Modify the `EnvVars` slice to include `PLUGIN_DEBUG` as `INPUT_DEBUG` * https://github.com/appleboy/ssh-action/issues/53#issuecomment-1184700432 * https://github.com/appleboy/ssh-action/issues/32#issuecomment-1184700363 * https://github.com/appleboy/ssh-action/issues/213 |
||
|---|---|---|
| .github | ||
| docker | ||
| images | ||
| tests | ||
| .gitignore | ||
| .goreleaser.yaml | ||
| DOCS.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| plugin_test.go | ||
| plugin.go | ||
| README.md | ||
drone-ssh
Drone plugin to execute commands on a remote host through SSH. For the usage information and a listing of the available options please take a look at the docs.
Note: Please update your image config path to appleboy/drone-ssh for drone. plugins/ssh is no longer maintained.
Breaking changes
v1.5.0: change command timeout flag to Duration. See the following setting:
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
The pre-compiled binaries can be downloaded from release page. Support the following OS type.
- Windows amd64/386
- Linux arm/amd64/386
- Darwin amd64/386
With Go installed
go install github.com/appleboy/drone-ssh@latest
or build the binary with the following command:
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 commands:
make docker
Usage
Execute from the 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
Please make sure that enable the trusted mode in project setting for drone 0.8 version.
Mount private key in volumes setting of .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 the detail of issue comment.
Configuration
See DOCS.md for examples and full configuration options
Configuration options are loaded from multiple sources:
- Hardcoded drone-ssh defaults. See main.go CLI Flags for more information.
- From a dotenv file at a path specified by the
PLUGIN_ENV_FILEenvironment variable. - From your
.drone.ymlDrone configuration.
Later sources override previous sources, i.e. if PORT is set in an .env file committed in the repository or created by previous test steps, it will override the default set main.go.


