Julien's dev blog

Gist: Github workflow that uses SSH

A sample Github workflow that uses SSH.

Last updated on: 2024-12-04

Setup your workflow file:

on:
  push:
    branches:
      - "main"

jobs:
  deploy:
    name: Deploy my app using SSH
    runs-on: ubuntu-latest
    env:
      SSH_KEY: ${{ secrets.SSH_KEY }}
      SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
      SSH_HOST: ${{ secrets.SSH_HOST }}
      SSH_KEY_PATH: "ssh_key"
    steps:
      - name: Import code
        uses: actions/checkout@v3
      - name: Do something that uses SSH
        run: |
          echo "$SSH_KEY" > "$SSH_KEY_PATH"
          chmod 0600 "$SSH_KEY_PATH"
          ssh -i "$SSH_KEY_PATH" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
              "$SSH_USERNAME"@"$SSH_HOST" "pwd"
For example in: /.github/workflows/deploy.yml

Define your secrets in your Github repo:

  • SSH_KEY: Private SSH key to connect to remote host.
  • SSH_USERNAME: OS username to use for SSH connection.
  • SSH_HOST: Remote host address (ex: "1.2.3.4").