How to Run SSH Commands on Your Server with GitHub Actions
- Published on
- • 1 mins read•--- views
On host machine
ssh-keygen -t rsa -b 4096 -C "<YOUR_EMAIL>"
In workflow.yml
deploy:
needs: publish
name: Deploy to VPS
runs-on: ubuntu-latest
steps:
- name: Install ssh keys
run: |
mkdir -p ~/.ssh
echo "${{secrets.APP_SSH_PRIVATE_KEY}}" > ~/.ssh/id_rsa_${{env.SERVICE_NAME}}
chmod 600 ~/.ssh/id_rsa_${{env.SERVICE_NAME}}
cat >>~/.ssh/config <<EOF
Host ${{env.SERVICE_NAME}}
HostName ${{env.APP_SSH_HOST}}
Port ${{env.APP_SSH_PORT}}
User ${{env.APP_SSH_USER}}
IdentityFile ~/.ssh/id_rsa_${{env.SERVICE_NAME}}
StrictHostKeyChecking no
EOF
- name: Connect and pull
run: |
ssh ${{env.SERVICE_NAME}} -p ${{env.APP_SSH_PORT}}
cd ${{env.APP_SSH_WORKDIR}}
echo ${{secrets.PAT}} | docker login ghcr.io -u ${{github.actor}} --password-stdin
docker compose pull ${{env.SERVICE_NAME}}
docker compose up -d ${{env.SERVICE_NAME}}
exit
- name: Cleanup
run: rm -rf ~/.ssh