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
![]() * * 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 |
||
---|---|---|
.github/workflows | ||
lib | ||
node_modules/@actions/core | ||
scripts | ||
src | ||
.editorconfig | ||
.gitignore | ||
.markdownlint.json | ||
.npmrc | ||
action.yml | ||
CHANGELOG.md | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
ssh-key-action.code-workspace | ||
tsconfig.json |
Install SSH key
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.