{"id":18115486,"url":"https://github.com/d12/ssh-to-actions","last_synced_at":"2026-02-08T09:33:38.245Z","repository":{"id":133995277,"uuid":"244005461","full_name":"d12/ssh-to-actions","owner":"d12","description":"A GitHub Action that setups up a reverse SSH tunnel allowing you to SSH into the runner box.","archived":false,"fork":false,"pushed_at":"2020-03-01T17:45:42.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-13T05:40:22.336Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-29T16:49:41.000Z","updated_at":"2020-03-01T17:45:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"1e19ea35-eb34-4277-86ca-528cc2e4ddf3","html_url":"https://github.com/d12/ssh-to-actions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/d12/ssh-to-actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d12%2Fssh-to-actions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d12%2Fssh-to-actions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d12%2Fssh-to-actions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d12%2Fssh-to-actions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d12","download_url":"https://codeload.github.com/d12/ssh-to-actions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d12%2Fssh-to-actions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29226470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T09:15:18.648Z","status":"ssl_error","status_checked_at":"2026-02-08T09:14:33.745Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-01T03:10:07.370Z","updated_at":"2026-02-08T09:33:38.219Z","avatar_url":"https://github.com/d12.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ssh-to-actions\nA GitHub Action that sets up a reverse SSH tunnel allowing you to SSH into the runner box from any internet-accessible machine.\n\n## How it works\n\nWe start by setting up an SSH reverse tunnel from the Actions host to your internet-accessible host. The tunnel tells your accessible host to route ssh traffic on localhost:22222 to the Actions host. Once the tunnel is configured, we just ssh to the local port 22222 and the tunnel takes care of everything else.\n\nThere are a couple different auth points. The Actions server has to auth with your accessible host when we set up the tunnel. We use SSH keys for this since I wouldn't want password auth on a public SSH server. We also have to auth into the Actions server when SSHing. We use a password for this since the runner is ephemeral, and should only be accessible via the tunnel. This could be configured to use another SSH pub/private key pair.\n\n## Setup\n\n### Configure Secrets\n\nThe action depends on a number of secrets to be set in settings/secrets (or via the API).\n\n`ssh_public_key`/`ssh_private_key` - The GitHub Actions runner must authenticate with your internet-accessible machine. To do so, we use a SSH public/private key pair. Please don't use existing keys, generate new ones!\n\n`reachable_host` - The host you'll be using to SSH into the actions runner. Note this _must_ be internet-accessible. E.g. `root@111.111.111.111`\n\n`password` - We reset the GitHub Actions runner password and then use the password to auth into the box when SSHing into it. Set to whatever you like.\n\n### Run action\n\nOnce your secrets are setup, run the GitHub Action. If all goes well, it'll hang on the \"Connect to remote server\" step. This means SSH has configured the tunnel and is waiting for traffic.\n\nOn your local machine, run `ssh -p 22222 runner@localhost`. Port 22222 is where we configured the tunnel, and `runner` is the hostname on the Actions server. This may error with a Offending ECDSA key error, which is expected since the runner is ephemeral and will be a new machine every time we try to connect. Simply run `ssh-keygen -f \"/root/.ssh/known_hosts\" -R [localhost]:22222` to clear up the error, and try again.\n\nWhen prompted for a password, use the password you set when configuring the secrets.\n\nAfter entering a password, you should be setup with a SSH connection to the runner machine :)\n\n![](https://i.imgur.com/yGSsRgY.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd12%2Fssh-to-actions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd12%2Fssh-to-actions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd12%2Fssh-to-actions/lists"}