1
0
Fork 0
mirror of https://github.com/shimataro/ssh-key-action.git synced 2025-06-19 22:52:10 +10:00
GitHub Action that installs SSH key to .ssh https://github.com/marketplace/actions/install-ssh-key
Find a file
shimataro 0374d240c3
Feature/append config known hosts (#47)
* * append to "config" and "known_hosts" instead of overwriting

* * refactor options

* * add test

* * fix test

* * print created files twice

* * print the contents of known_hosts and config

* * fix revision for test

* * fix revision

* * add LF to known_hosts / config

* * append LF to config and known_hosts

* * fix test

* * reject overwriting private-key and public-key

* * update test (will cause error)

* * revert verify.yml

* * update README and CHANGELOG

* * fix example in README

* * update CHANGELOG
2019-12-30 08:24:22 +09:00
.github/workflows * verify HEAD refs 2019-12-22 20:44:22 +09:00
lib Feature/append config known hosts (#47) 2019-12-30 08:24:22 +09:00
node_modules/@actions/core update dependencies (#37) 2019-11-23 13:14:16 +09:00
scripts Feature/scripts (#18) 2019-09-22 08:47:04 +09:00
src Feature/append config known hosts (#47) 2019-12-30 08:24:22 +09:00
.editorconfig * add .editorconfig (#4) 2019-09-18 22:53:46 +09:00
.gitignore * first action! (#1) 2019-09-18 20:39:54 +09:00
.markdownlint.json * configure markdownlint (#23) 2019-09-22 15:33:38 +09:00
.npmrc Feature/dependencies (#16) 2019-09-22 08:29:38 +09:00
action.yml Feature/config (#39) 2019-12-22 19:01:05 +09:00
CHANGELOG.md Feature/append config known hosts (#47) 2019-12-30 08:24:22 +09:00
LICENSE Initial commit 2019-09-18 20:10:02 +09:00
package-lock.json update dependencies (#41) 2019-12-22 19:15:01 +09:00
package.json update dependencies (#41) 2019-12-22 19:15:01 +09:00
README.md Feature/append config known hosts (#47) 2019-12-30 08:24:22 +09:00
ssh-key-action.code-workspace Feature/vscode (#5) 2019-09-18 22:54:17 +09:00
tsconfig.json * first action! (#1) 2019-09-18 20:39:54 +09:00

Install SSH key

Build Connection test Release License

This action installs SSH key into ~/.ssh.

Useful for SCP, SFTP, and rsync over SSH in deployment script.

Usage

Add your SSH key to your product secrets by clicking Settings - Secrets - Add a new secret beforehand.

runs-on: ubuntu-latest
steps:
- name: Install SSH key
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY }}
    public-key: ${{ secrets.SSH_KEY_PUBLIC }}
    name: id_rsa # optional
    known-hosts: ${{ secrets.KNOWN_HOSTS }} # known_hosts; optional
    config: ${{ secrets.CONFIG }} # ssh_config; optional
- name: Install packages
  run: apt install openssh-client rsync
- name: rsync over ssh
  run: rsync ./foo/ user@remote:bar/

See Workflow syntax for GitHub Actions for details.

Install multiple keys

If you want to install multiple keys, call this action multiple times. It is useful for port forwarding.

NOTE: When this action is called multiple times, the contents of known-hosts and config will be appended. But public-key and private-key must be saved as different name, by using name option.

runs-on: ubuntu-latest
steps:
- name: Install SSH key of bastion
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY_OF_BASTION }}
    public-key: ${{ secrets.SSH_KEY_OF_BASTION_PUBLIC }}
    name: id_rsa-bastion
    known-hosts: ${{ secrets.KNOWN_HOSTS_OF_BASTION }}
    config: |
      Host bastion
        HostName xxx.xxx.xxx.xxx
        User user-of-bastion
        IdentityFile ~/.ssh/id_rsa-bastion
- name: Install SSH key of target
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY_OF_TARGET }}
    public-key: ${{ secrets.SSH_KEY_OF_TARGET_PUBLIC }}
    name: id_rsa-target
    known-hosts: ${{ secrets.KNOWN_HOSTS_OF_TARGET }} # will be appended!
    config: |                                         # will be appended!
      Host target
        HostName yyy.yyy.yyy.yyy
        User user-of-target
        IdentityFile ~/.ssh/id_rsa-target
        ProxyCommand ssh -W %h:%p bastion
- name: Install packages
  run: apt install openssh-client
- name: SCP via port-forwarding
  run: scp ./foo/ target:bar/

License

The scripts and documentation in this project are released under the MIT License

Changelog

See CHANGELOG.md.