SSH

The example Yaml configurations in this file are using the legacy 0.8 syntax. If you are using Drone 1.0 or Drone Cloud please ensure you use the appropriate 1.0 syntax. Learn more here.

Use the SSH plugin to execute commands on a remote server. The below pipeline configuration demonstrates simple usage:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host: foo.com
    username: root
    password: 1234
    port: 22
    script:
      - echo hello
      - echo world

Example configuration in your .drone.yml file for multiple hosts:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host:
+    - foo.com
+    - bar.com
    username: root
    password: 1234
    port: 22
    script:
      - echo hello
      - echo world

Example configuration for command timeout (unit: second), default value is 60 seconds:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host: foo.com
    username: root
    password: 1234
    port: 22
+   command_timeout: 120
    script:
      - echo hello
      - echo world

Example configuration for execute commands on a remote server using `SSHProxyCommand`:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host: foo.com
    username: root
    password: 1234
    port: 22
    script:
      - echo hello
      - echo world
+   proxy_host: 10.130.33.145
+   proxy_user: ubuntu
+   proxy_port: 22
+   proxy_password: 1234

Example configuration using password from secrets:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host: foo.com
    username: root
-   password: 1234
    port: 22
+   secrets: [ ssh_password ]
    script:
      - echo hello
      - echo world

Example configuration using ssh key from secrets:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host: foo.com
    username: root
    port: 22
+   secrets: [ ssh_key ]
    script:
      - echo hello
      - echo world

Example configuration for exporting custom secrets:

pipeline:
  ssh:
    image: appleboy/drone-ssh
    host: foo.com
    username: root
    password: 1234
    port: 22
+   secrets: [ aws_access_key_id ]
+   envs: [ aws_access_key_id ]
    script:
      - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID

Secret Reference

ssh_username
account for target host user
ssh_password
password for target host user
ssh_key
plain text of user private key
proxy_ssh_username
account for user of proxy server
proxy_ssh_password
password for user of proxy server
proxy_ssh_key
plain text of user private key for proxy server

Parameter Reference

host
target hostname or IP
port
ssh port of target host
username
account for target host user
password
password for target host user
key
plain text of user private key
key_path
key path of user private key
envs
custom secrets which are made available in the script section
script
execute commands on a remote server
timeout
Timeout is the maximum amount of time for the TCP connection to establish.
command_timeout
Command timeout is the maximum amount of time for the execute commands, default is 60 secs.
proxy_host
proxy hostname or IP
proxy_port
ssh port of proxy host
proxy_username
account for proxy host user
proxy_password
password for proxy host user
proxy_key
plain text of proxy private key
proxy_key_path
key path of proxy private key