15 Commits

Author SHA1 Message Date
Bo-Yi Wu
8b3eebcc8d Merge pull request #11 from dbingham/fixTypo
Some checks failed
scp files / Build (push) Failing after 5s
Update to drone-scp 1.5.6
2020-02-27 11:19:51 +08:00
Daniel Bingham
861f2e0e7b Update to drone-scp 1.5.6
To pull in the fix for the typo related to proxy_paraphrase
2020-02-26 18:19:00 -08:00
Bo-Yi Wu
6971270956 Add rm default value. 2020-02-25 23:47:04 +08:00
Bo-Yi Wu
bac6c9e026 update rm default value 2020-02-25 23:46:08 +08:00
Bo-Yi Wu
b04405242e chore: improve ci workflow 2020-02-14 00:49:23 +08:00
Bo-Yi Wu
5cb36bda99 chore: add proxy setting
Some checks failed
scp files / Build (push) Failing after 4s
2020-01-20 23:08:15 +08:00
Bo-Yi Wu
6c5771fab8 chore: Add passphrase 2020-01-20 23:07:25 +08:00
Bo-Yi Wu
193fd4eaa9 chore: add passphrase testing 2020-01-20 22:51:17 +08:00
Bo-Yi Wu
a5de8af6d5 chore: update default timeout to 10 minutes
Some checks failed
scp files / Build (push) Failing after 4s
2019-11-30 23:17:05 +08:00
Bo-Yi Wu
671c934c80 Update README.md 2019-09-30 21:52:10 +08:00
Bo-Yi Wu
8da6e3d335 update docs
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2019-09-30 16:59:44 +08:00
Bo-Yi Wu
196ea3f88f chore(scp): default port is 22
Some checks failed
scp files / Build (push) Failing after 4s
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2019-09-30 16:58:33 +08:00
Bo-Yi Wu
034b0ad00c Update README.md 2019-09-30 11:38:02 +08:00
Bo-Yi Wu
95e250284b docs: update readme 2019-09-29 14:16:22 +08:00
Bo-Yi Wu
a593d18cb8 docs: add default value of timeout 2019-09-29 01:45:56 +08:00
4 changed files with 91 additions and 21 deletions

View File

@@ -6,9 +6,11 @@ jobs:
name: Build name: Build
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@master - name: checkout
uses: actions/checkout@v1
- name: copy file via ssh password - name: copy file via ssh password
uses: appleboy/scp-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -18,7 +20,7 @@ jobs:
target: "test" target: "test"
- name: copy file via ssh key - name: copy file via ssh key
uses: appleboy/scp-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -28,7 +30,7 @@ jobs:
target: "test" target: "test"
- name: remove the specified number of leading path elements - name: remove the specified number of leading path elements
uses: appleboy/scp-action@master uses: ./
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -37,3 +39,14 @@ jobs:
source: "tests/a.txt,tests/b.txt" source: "tests/a.txt,tests/b.txt"
target: "foobar" target: "foobar"
strip_components: 1 strip_components: 1
- name: ssh key with passphrase
uses: ./
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH2 }}
passphrase: ${{ secrets.PASSPHRASE }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"

View File

@@ -1,4 +1,4 @@
FROM appleboy/drone-scp:1.5.3-linux-amd64 FROM appleboy/drone-scp:1.5.6-linux-amd64
ADD entrypoint.sh /entrypoint.sh ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh

View File

@@ -1,6 +1,6 @@
# 🚀 SCP for GitHub Actions # 🚀 SCP for GitHub Actions
[GitHub Action](https://developer.github.com/actions/) for copying files and artifacts via SSH. [GitHub Action](https://github.com/features/actions) for copying files and artifacts via SSH.
![ssh key](./images/copy-multiple-file.png) ![ssh key](./images/copy-multiple-file.png)
@@ -11,15 +11,24 @@
copy files and artifacts via SSH as blow. copy files and artifacts via SSH as blow.
```yaml ```yaml
- name: copy file via ssh password name: scp files
uses: appleboy/scp-action@master on: [push]
with: jobs:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} build:
password: ${{ secrets.PASSWORD }} name: Build
port: ${{ secrets.PORT }} runs-on: ubuntu-latest
source: "tests/a.txt,tests/b.txt" steps:
target: "test" - uses: actions/checkout@master
- name: copy file via ssh password
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
``` ```
## Input variables ## Input variables
@@ -27,20 +36,32 @@ copy files and artifacts via SSH as blow.
see the [action.yml](./action.yml) file for more detail imformation. see the [action.yml](./action.yml) file for more detail imformation.
* host - scp remote host * host - scp remote host
* port - scp remote port * port - scp remote port, default is `22`
* username - scp username * username - scp username
* password - scp password * password - scp password
* timeout - timeout for ssh to remote host * passphrase - the passphrase is usually to encrypt the private key
* command_timeout - timeout for scp command * timeout - timeout for ssh to remote host, default is `30s`
* command_timeout - timeout for scp 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
* target - target path on the server * target - target path on the server
* source - scp file list * source - scp file list
* rm - remove target folder before upload data * rm - remove target folder before upload data, default is `false`
* strip_components - remove the specified number of leading path elements. * strip_components - remove the specified number of leading path elements.
* overwrite - use `--overwrite` flag with tar * overwrite - use `--overwrite` flag with tar
* tar_tmp_path - temporary path for tar file on the dest host * tar_tmp_path - temporary path for tar file on the dest host
SSH Proxy Setting:
* proxy_host - proxy host
* proxy_port - proxy port, default is `22`
* proxy_username - proxy username
* proxy_password - proxy password
* proxy_passphrase - the passphrase is usually to encrypt the private key
* proxy_timeout - timeout for ssh to proxy host, default is `30s`
* proxy_key - content of ssh proxy private key.
* proxy_key_path - path of ssh proxy private key
### Example ### Example
Copy file via ssh password Copy file via ssh password
@@ -90,7 +111,6 @@ Example configuration for ignore list:
Example configuration for multiple server Example configuration for multiple server
```diff ```diff
- name: copy file via ssh password
uses: appleboy/scp-action@master uses: appleboy/scp-action@master
with: with:
- host: "example.com" - host: "example.com"
@@ -133,3 +153,18 @@ foobar
├── a.txt ├── a.txt
└── b.txt └── b.txt
``` ```
Protecting a Private Key. The purpose of the passphrase is usually to encrypt the private key. This makes the key file by itself useless to an attacker. It is not uncommon for files to leak from backups or decommissioned hardware, and hackers commonly exfiltrate files from compromised systems.
```diff
- name: ssh key with passphrase
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH2 }}
+ passphrase: ${{ secrets.PASSPHRASE }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
```

View File

@@ -6,6 +6,7 @@ inputs:
description: 'scp remote host' description: 'scp remote host'
port: port:
description: 'scp remote port' description: 'scp remote port'
default: 22
username: username:
description: 'scp username' description: 'scp username'
password: password:
@@ -15,17 +16,20 @@ inputs:
default: "30s" default: "30s"
command_timeout: command_timeout:
description: 'timeout for scp command' description: 'timeout for scp command'
default: "1m" default: "10m"
key: key:
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'
passphrase:
description: 'ssh key passphrase'
target: target:
description: 'target path on the server' description: 'target path on the server'
source: source:
description: 'scp file list' description: 'scp file list'
rm: rm:
description: 'remove target folder before upload data' description: 'remove target folder before upload data'
default: false
strip_components: strip_components:
description: 'remove the specified number of leading path elements' description: 'remove the specified number of leading path elements'
default: 0 default: 0
@@ -34,6 +38,24 @@ inputs:
default: false default: false
tar_tmp_path: tar_tmp_path:
description: 'temporary path for tar file on the dest host' description: 'temporary path for tar file on the dest host'
proxy_host:
description: 'ssh proxy remote host'
proxy_port:
description: 'ssh proxy remote port'
default: 22
proxy_username:
description: 'ssh proxy username'
proxy_password:
description: 'ssh proxy password'
proxy_passphrase:
description: 'ssh proxy key passphrase'
proxy_timeout:
description: 'timeout for ssh to proxy host'
default: "30s"
proxy_key:
description: 'content of ssh proxy private key. ex raw content of ~/.ssh/id_rsa'
proxy_key_path:
description: 'path of ssh proxy private key'
runs: runs:
using: 'docker' using: 'docker'
image: 'Dockerfile' image: 'Dockerfile'