All Projects β†’ shimataro β†’ Ssh Key Action

shimataro / Ssh Key Action

Licence: mit
GitHub Action that installs SSH key to .ssh

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to Ssh Key Action

custom-ssh-key-buildpack
πŸ”‘ Add an SSH key to you Heroku dyno πŸ”‘
Stars: ✭ 49 (-73.51%)
Mutual labels:  ssh-key
Skm
A simple and powerful SSH keys manager
Stars: ✭ 670 (+262.16%)
Mutual labels:  ssh-key
Rdiffweb
A simplified backup management software for quick access to your archives through an efficient web interface.
Stars: ✭ 76 (-58.92%)
Mutual labels:  ssh-key
ansible-ssh-keys
Ansible role to manage ssh keys in Debian-like systems
Stars: ✭ 26 (-85.95%)
Mutual labels:  ssh-key
Git Tutorials
Git-Tutorials GITεŸΊζœ¬δ½Ώη”¨ζ•™ε­ΈπŸ“
Stars: ✭ 539 (+191.35%)
Mutual labels:  ssh-key
Geofront Cli
It provides a CLI client for Geofront, a simple SSH key management server.
Stars: ✭ 30 (-83.78%)
Mutual labels:  ssh-key
sshame
brute force SSH public-key authentication
Stars: ✭ 43 (-76.76%)
Mutual labels:  ssh-key
Cedarkey
$2 hardware SSH keys storage
Stars: ✭ 148 (-20%)
Mutual labels:  ssh-key
Cashier
A self-service CA for OpenSSH
Stars: ✭ 590 (+218.92%)
Mutual labels:  ssh-key
Sshremotekeys
Managing SSH keys remotely to control access to hosts
Stars: ✭ 70 (-62.16%)
Mutual labels:  ssh-key
Ssh Vault
🌰 encrypt/decrypt using ssh keys
Stars: ✭ 277 (+49.73%)
Mutual labels:  ssh-key
Ssh Permit A38
Central management and deployment for SSH keys
Stars: ✭ 451 (+143.78%)
Mutual labels:  ssh-key
Ssh Agent Helper
Use SSH keys from CMD, PowerShell, etc. on Windows
Stars: ✭ 31 (-83.24%)
Mutual labels:  ssh-key
wsl-agent-bridge
WSL compatibility bridge for ssh-agent on Windows
Stars: ✭ 17 (-90.81%)
Mutual labels:  ssh-key
Lastpass Ssh
SSH key management with LastPass
Stars: ✭ 105 (-43.24%)
Mutual labels:  ssh-key
ssh-agent-inject
[Note: Not needed with VS Code anymore.] Forwards the host's ssh-agent into a Docker container on Windows and macOS hosts.
Stars: ✭ 20 (-89.19%)
Mutual labels:  ssh-key
Ssh Keys In Macos Sierra Keychain
Saving SSH keys in macOS Sierra keychain
Stars: ✭ 928 (+401.62%)
Mutual labels:  ssh-key
Sshkeydistribut0r
A tool to automate key distribution with user authorization
Stars: ✭ 153 (-17.3%)
Mutual labels:  ssh-key
Awesome Ssh
πŸ’» A curated list of SSH resources.
Stars: ✭ 1,742 (+841.62%)
Mutual labels:  ssh-key
Setup Nginx Webserver
πŸš€Setup a perfect webserver on CentOS/Redhat 7.x guide with understanding.
Stars: ✭ 65 (-64.86%)
Mutual labels:  ssh-key

Install SSH Key

Build Windows macOS Ubuntu Docker container (Ubuntu) Docker container (CentOS) Release License Stars

This action installs SSH key in ~/.ssh.

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

tested on:

Usage

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

PEM(RSA), PKCS8, and RFC4716(OpenSSH) formats are OK.

runs-on: ubuntu-latest
steps:
- name: Install SSH key
  uses: shimataro/[email protected]
  with:
    key: ${{ secrets.SSH_KEY }}
    name: id_rsa # optional
    known_hosts: ${{ secrets.KNOWN_HOSTS }}
    config: ${{ secrets.CONFIG }} # ssh_config; optional
    if_key_exists: fail # replace / ignore / fail; optional (defaults to fail)
- name: rsync over ssh
  run: rsync ./foo/ [email protected]: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. key must be saved as different name, by using name option.

runs-on: ubuntu-latest
steps:
- name: Install SSH key of bastion
  uses: shimataro/[email protected]
  with:
    key: ${{ secrets.SSH_KEY_OF_BASTION }}
    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/[email protected]
  with:
    key: ${{ secrets.SSH_KEY_OF_TARGET }}
    name: id_rsa-target
    known_hosts: ${{ secrets.KNOWN_HOSTS_OF_TARGET }} # will be appended to existing .ssh/known_hosts
    config: |                                         # will be appended to existing .ssh/config
      Host target
        HostName yyy.yyy.yyy.yyy
        User user-of-target
        IdentityFile ~/.ssh/id_rsa-target
        ProxyCommand ssh -W %h:%p bastion
- name: SCP via port-forwarding
  run: scp ./foo/ target:bar/

Q&A

SSH failed even though key has been installed.

Check below:

  • Host key verification failed.:
    • Set known_hosts parameter correctly (use ssh-keyscan command).

I want to replace/ignore key if exists.

Use if_key_exists parameter.

  • replace: replaces key
  • ignore: does nothing
  • fail: fails (default)

How do I use encrypted SSH key?

This action doesn't support encrypted key directly. Here are some solutions:

  • decrypting key beforehand: best bet, and works on any VM
  • sshpass command: next best bet, but not supported on Windows
  • expect command: be careful not to expose passphrase to console
  • SSH_ASKPASS environment variable: might be troublesome

Which one is the best way for transferring files, "direct SCP/SFTP/rsync" or "SCP/SFTP/rsync via bastion"?

I recommend rsync via bastion.

rsync -e "ssh bastion ssh" ./foo/ target:bar/

It has some advantages over other methods:

  • "Rsync via bastion" doesn't require to update workflow files and secrets even if it is necessary to transfer files to multiple servers.
    • Other methods require to update known_hosts if servers have changed.
  • Rsync:
    • is fastest of all.
    • does NOT break files even if disconnected during transferring.
    • can remove files that don't exist on server.
  • SCP is deprecated by OpenSSH due to outdated and inflexible protocol.
  • Using bastion is more secure because:
    • it is not necessarily to expose SSH port on servers to public.
      • Address filtering is less effective.
      • Because Azure address range is very wide.
      • And will be updated continuously.
    • if security incident ―e.g., private key leaked― occurs, it's OK just to remove authorized_keys on bastion.

License

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

Changelog

See CHANGELOG.md.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].