ci: enhance GitHub Actions with secret variable support (#330)
- ci: enhance GitHub Actions with secret variable support
- Add a step to pass secret variables in the shell within the GitHub Actions workflow
Signed-off-by: appleboy appleboy.tw@gmail.com
- ci: enhance CI workflow and API integration
- Add
continue-on-error: true
to the GitHub Actions workflowSigned-off-by: appleboy appleboy.tw@gmail.com
- ci: improve GitHub Actions workflow reliability
- Add
continue-on-error: true
to the GitHub Actions workflowSigned-off-by: appleboy appleboy.tw@gmail.com
Signed-off-by: appleboy appleboy.tw@gmail.com
🚀 SSH for GitHub Actions
繁體中文
GitHub Action for executing remote ssh commands.
Important: Only support Linux docker container.
This thing is built using Golang and drone-ssh. 🚀
Input variables
See action.yml for more detailed information.
GITHUB_
andINPUT_
to the scriptUsage
Executing remote ssh commands.
output:
Setting up a SSH Key
Make sure to follow the below steps while creating SSH Keys and using them. The best practice is create the SSH Keys on local machine not remote machine. Login with username specified in Github Secrets. Generate a RSA Key-Pair:
Generate rsa key
Generate ed25519 key
Add newly generated key into Authorized keys. Read more about authorized keys here.
Add rsa key into Authorized keys
Add ed25519 key into Authorized keys
Copy Private Key content and paste in Github Secrets.
Copy rsa Private key
Before copying the private key, install
clip
command as shown below:copy the private key:
Copy ed25519 Private key
See the detail information about SSH login without password.
A note from one of our readers: Depending on your version of SSH you might also have to do the following changes:
.ssh/authorized_keys2
.ssh
to 700.ssh/authorized_keys2
to 640If you are using OpenSSH
If you are currently using OpenSSH and are getting the following error:
Make sure that your key algorithm of choice is supported. On Ubuntu 20.04 or later you must explicitly allow the use of the ssh-rsa algorithm. Add the following line to your OpenSSH daemon file (which is either
/etc/ssh/sshd_config
or a drop-in file under/etc/ssh/sshd_config.d/
):Alternatively,
ed25519
keys are accepted by default in OpenSSH. You could use this instead of rsa if needed:Example
Executing remote ssh commands using password
Using private key
Multiple Commands
Multiple Hosts
The default value of
port
is22
.Multiple hosts with different port
Synchronous execution on multiple hosts
Pass environment variable to shell script
Inside
env
object, you need to pass every environment variable as a string, passingInteger
data type or any other may output unexpected results.Stop script after first failure
output:
How to connect remote server using
ProxyCommand
?in your
~/.ssh/config
, you will see the following.How to convert to YAML format of GitHubActions
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.
Using host fingerprint verification
Setting up SSH host fingerprint verification can help to prevent Person-in-the-Middle attacks. Before setting this up, run the command below to get your SSH host fingerprint. Remember to replace
ed25519
with your appropriate key type (rsa
,dsa
, etc.) that your server is using andexample.com
with your host.In modern OpenSSH releases, the default key types to be fetched are
rsa
(since version 5.1),ecdsa
(since version 6.0), anded25519
(since version 6.7).Now you can adjust you config:
Q&A
Command not found (npm or other command)
See the issue comment about interactive vs non interactive shell. Thanks @kocyigityunus for the solution.
Basically, if you are running a command in a non interactive shell, like ssh-action, on many linux distros,
/etc/bash.bashrc
file has a specific command that returns only, so some of the files didn’t run and some specific commands doesn’t add to path,just comment out the line that returns early and everything should work fine, or you can use the real paths of the commands that you would like to use.
Contributing
We would love for you to contribute to
appleboy/ssh-action
, pull requests are welcome!License
The scripts and documentation in this project are released under the MIT License