22 Commits

Author SHA1 Message Date
bf84735fa9 fix: Multiline SSH commands interpreted as single lines
Some checks failed
remote ssh command / Build (push) Failing after 5s
fix https://github.com/appleboy/ssh-action/issues/75
2020-08-08 15:39:00 +08:00
d09b6e0211 chore: try the latest version 2020-08-08 15:34:38 +08:00
3ac4675689 chore: Add Multiline SSH commands interpreted as single lines 2020-08-08 12:26:01 +08:00
269a4479eb chore: Multiline SSH commands interpreted as single lines 2020-08-03 22:15:09 +08:00
a2f91cbad1 (info) Pass env variable as string (#69) 2020-07-08 16:46:24 +08:00
e2cbea5f00 chore: bump drone-ssh to v1.6.1 (#63)
Some checks failed
remote ssh command / Build (push) Failing after 4s
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2020-06-15 16:45:26 +08:00
5711a203b3 fix typo 2020-06-05 09:05:02 +08:00
b315fb5f98 Update README.md 2020-06-05 09:03:15 +08:00
682eb0ddda chore: bump drone-ssh to v1.6.0
Some checks failed
remote ssh command / Build (push) Failing after 4s
2020-05-24 13:59:21 +08:00
03b440e441 docs: add cipher parameter 2020-05-24 13:13:09 +08:00
1cb5cd31c9 chore: update to latest version 2020-05-24 12:09:05 +08:00
c9eebc1cde chore: support use_insecure_cipher (#57)
Some checks failed
remote ssh command / Build (push) Failing after 3s
2020-05-24 10:54:31 +08:00
6b00175bad add support for fingerprint: (#54) 2020-05-19 14:21:26 +08:00
a912e225ec chore: Add limitation in readme 2020-05-08 19:05:53 +08:00
ad6643f705 chore: support ciphers
Some checks failed
remote ssh command / Build (push) Failing after 11s
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2020-04-30 15:56:29 +08:00
26dd2b3a38 chore: upgrade drone-ssh to 1.5.6
Some checks failed
remote ssh command / Build (push) Failing after 6s
2020-04-16 22:24:18 +08:00
122f35dca5 chore: improve ci workflow (#34) 2020-02-13 21:20:15 +08:00
03b5d10ad6 docs: update desctiption 2020-02-13 21:17:09 +08:00
fcfb760891 docs: add GitHub syntax (#30)
see: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions

fixed: https://github.com/appleboy/ssh-action/issues/28
2020-02-09 11:37:56 +08:00
fd81fae289 chore: echo sha string 2020-02-09 11:29:31 +08:00
242a8e2e57 chore: Add Contexts and expression example 2020-02-09 11:25:59 +08:00
cfe9c45db6 docs: sync parameter (#25) 2020-01-30 22:40:33 +08:00
4 changed files with 93 additions and 16 deletions

View File

@ -6,8 +6,11 @@ jobs:
name: Build name: Build
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: checkout
uses: actions/checkout@v1
- name: executing remote ssh commands using password - name: executing remote ssh commands using password
uses: appleboy/ssh-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@ -16,7 +19,7 @@ jobs:
script: whoami script: whoami
- name: executing remote ssh commands using ssh key - name: executing remote ssh commands using ssh key
uses: appleboy/ssh-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@ -25,7 +28,7 @@ jobs:
script: whoami script: whoami
- name: multiple command - name: multiple command
uses: appleboy/ssh-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@ -36,7 +39,7 @@ jobs:
ls -al ls -al
# - name: stop script if command error # - name: stop script if command error
# uses: appleboy/ssh-action@master # uses: ./
# with: # with:
# host: ${{ secrets.HOST }} # host: ${{ secrets.HOST }}
# username: ${{ secrets.USERNAME }} # username: ${{ secrets.USERNAME }}
@ -48,7 +51,7 @@ jobs:
# ls -al # ls -al
- name: pass environment - name: pass environment
uses: appleboy/ssh-action@master uses: ./
env: env:
FOO: "BAR" FOO: "BAR"
with: with:
@ -62,22 +65,24 @@ jobs:
echo "I am $BAR, thanks" echo "I am $BAR, thanks"
- name: pass multiple environment - name: pass multiple environment
uses: appleboy/ssh-action@master uses: ./
env: env:
FOO: "BAR" FOO: "BAR"
BAR: "FOO" BAR: "FOO"
SHA: ${{ github.sha }}
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }} key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }} port: ${{ secrets.PORT }}
envs: FOO,BAR envs: FOO,BAR,SHA
script: | script: |
echo "I am $FOO, thanks" echo "I am $FOO, thanks"
echo "I am $BAR, thanks" echo "I am $BAR, thanks"
echo "sha: $SHA"
- name: ssh key passphrase - name: ssh key passphrase
uses: appleboy/ssh-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@ -87,3 +92,29 @@ jobs:
script: | script: |
whoami whoami
ls -al ls -al
- name: use insecure cipher
uses: ./
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
ls \
-lah
use_insecure_cipher: true
# https://github.com/appleboy/ssh-action/issues/75#issuecomment-668314271
- name: Multiline SSH commands interpreted as single lines
uses: ./
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script_stop: true
script: |
ls \
-lah
use_insecure_cipher: true

View File

@ -1,4 +1,4 @@
FROM appleboy/drone-ssh:1.5.5-linux-amd64 FROM appleboy/drone-ssh:1.6.2-linux-amd64
ADD entrypoint.sh /entrypoint.sh ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh

View File

@ -6,6 +6,8 @@
[![Actions Status](https://github.com/appleboy/ssh-action/workflows/remote%20ssh%20command/badge.svg)](https://github.com/appleboy/ssh-action/actions) [![Actions Status](https://github.com/appleboy/ssh-action/workflows/remote%20ssh%20command/badge.svg)](https://github.com/appleboy/ssh-action/actions)
**Important**: Only support **Linux** [docker](https://www.docker.com/) container.
## Usage ## Usage
Executing remote ssh commands. Executing remote ssh commands.
@ -45,19 +47,23 @@ out: ***
See [action.yml](./action.yml) for more detailed information. See [action.yml](./action.yml) for more detailed information.
* host - remote host * host - ssh host
* port - remote port, default is `22` * port - ssh port, default is `22`
* username - ssh username * username - ssh username
* password - ssh password * password - ssh password
* passphrase - the passphrase is usually to encrypt the private key * passphrase - the passphrase is usually to encrypt the private key
* sync - synchronous execution if multiple hosts, default is false
* timeout - timeout for ssh to remote host, default is `30s` * timeout - timeout for ssh to remote host, default is `30s`
* command_timeout - timeout for ssh command, default is `10m` * command_timeout - timeout for ssh command, default is `10m`
* key - content of ssh private key. ex raw content of ~/.ssh/id_rsa * key - content of ssh private key. ex raw content of ~/.ssh/id_rsa
* key_path - path of ssh private key * key_path - path of ssh private key
* fingerprint - fingerprint SHA256 of the host public key, default is to skip verification
* script - execute commands * script - execute commands
* script_stop - stop script after first failure * script_stop - stop script after first failure
* envs - pass environment variable to shell script * envs - pass environment variable to shell script
* debug - enable debug mode * debug - enable debug mode
* use_insecure_cipher - include more ciphers with use_insecure_cipher (see [#56](https://github.com/appleboy/ssh-action/issues/56))
* cipher - the allowed cipher algorithms. If unspecified then a sensible
SSH Proxy Setting: SSH Proxy Setting:
@ -69,6 +75,9 @@ SSH Proxy Setting:
* proxy_timeout - timeout for ssh to proxy host, default is `30s` * proxy_timeout - timeout for ssh to proxy host, default is `30s`
* proxy_key - content of ssh proxy private key. * proxy_key - content of ssh proxy private key.
* proxy_key_path - path of ssh proxy private key * proxy_key_path - path of ssh proxy private key
* proxy_fingerprint - fingerprint SHA256 of the proxy host public key, default is to skip verification
* proxy_use_insecure_cipher - include more ciphers with use_insecure_cipher (see [#56](https://github.com/appleboy/ssh-action/issues/56))
* proxy_cipher - the allowed cipher algorithms. If unspecified then a sensible
### Example ### Example
@ -131,6 +140,22 @@ Multiple Hosts
ls -al ls -al
``` ```
Synchronous execution on multiple hosts
```diff
- name: multiple host
uses: appleboy/ssh-action@master
with:
host: "foo.com,bar.com"
+ sync: true
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
script: |
whoami
ls -al
```
Pass environment variable to shell script Pass environment variable to shell script
```diff ```diff
@ -139,6 +164,7 @@ Pass environment variable to shell script
+ env: + env:
+ FOO: "BAR" + FOO: "BAR"
+ BAR: "FOO" + BAR: "FOO"
+ SHA: ${{ github.sha }}
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@ -148,8 +174,11 @@ Pass environment variable to shell script
script: | script: |
echo "I am $FOO" echo "I am $FOO"
echo "I am $BAR" echo "I am $BAR"
echo "sha: $SHA"
``` ```
_Inside `env` object, you need to pass every environment variable as a string, passing `Integer` data type or any other may output unexpected results._
Stop script after first failure. ex: missing `abc` folder Stop script after first failure. ex: missing `abc` folder
```diff ```diff

View File

@ -3,9 +3,9 @@ description: 'Executing remote ssh commands'
author: 'Bo-Yi Wu' author: 'Bo-Yi Wu'
inputs: inputs:
host: host:
description: 'ssh remote host' description: 'ssh host'
port: port:
description: 'ssh remote port' description: 'ssh port'
default: 22 default: 22
passphrase: passphrase:
description: 'ssh key passphrase' description: 'ssh key passphrase'
@ -13,8 +13,16 @@ inputs:
description: 'ssh username' description: 'ssh username'
password: password:
description: 'ssh password' description: 'ssh password'
sync:
description: 'synchronous execution if multiple hosts'
default: false
use_insecure_cipher:
description: 'include more ciphers with use_insecure_cipher'
default: false
cipher:
description: 'the allowed cipher algorithms. If unspecified then a sensible'
timeout: timeout:
description: 'timeout for ssh to remote host' description: 'timeout for ssh to host'
default: "30s" default: "30s"
command_timeout: command_timeout:
description: 'timeout for ssh command' description: 'timeout for ssh command'
@ -23,10 +31,12 @@ inputs:
description: 'content of ssh private key. ex raw content of ~/.ssh/id_rsa' description: 'content of ssh private key. ex raw content of ~/.ssh/id_rsa'
key_path: key_path:
description: 'path of ssh private key' description: 'path of ssh private key'
fingerprint:
description: 'sha256 fingerprint of the host public key'
proxy_host: proxy_host:
description: 'ssh proxy remote host' description: 'ssh proxy host'
proxy_port: proxy_port:
description: 'ssh proxy remote port' description: 'ssh proxy port'
default: 22 default: 22
proxy_username: proxy_username:
description: 'ssh proxy username' description: 'ssh proxy username'
@ -41,6 +51,13 @@ inputs:
description: 'content of ssh proxy private key. ex raw content of ~/.ssh/id_rsa' description: 'content of ssh proxy private key. ex raw content of ~/.ssh/id_rsa'
proxy_key_path: proxy_key_path:
description: 'path of ssh proxy private key' description: 'path of ssh proxy private key'
proxy_fingerprint:
description: 'sha256 fingerprint of the proxy host public key'
proxy_cipher:
description: 'the allowed cipher algorithms. If unspecified then a sensible'
proxy_use_insecure_cipher:
description: 'include more ciphers with use_insecure_cipher'
default: false
script: script:
description: 'execute commands' description: 'execute commands'
script_stop: script_stop: