I recently ran accross the situation where I wanted to push changes to a repo that was stored on my personal Gitlab server. The issue was that I had recently restructured my homelab and the only way to get to the gitlab server via SSH was through a jumpbox. These were the steps I took to be able to use the normal git workflow while still keeping my network design / security choices intact.

On dev machine

First we will create a new SSH key for the hop from dev machine --> jumpbox.

ssh-keygen -t ed25519 -C "gitlab multihop" -f ~/.ssh/multihop.ed25519 -N ""

This creates a new SSH key (ed25519 type) called multihop.ed25519 with no passphrase and stored in our profile's .ssh directory.

Copy it to the jumpbox

ssh-copy-id -i ~/.ssh/multihop.ed25519 username@jumpbox

Now edit (or create) your profile's SSH config file and add in the host parameters.

vi ~/.ssh/config

Host jumpbox
  User jumpboxusernamehere
  Port 22
  IdentityFile ~/.ssh/multihop.ed25519



Host gitlab
  Hostname gitlab.ip.or.hostname
  Port 22
  ProxyJump jumpbox.ip.or.hostname
  User gitlabboxusername
  IdentityFile ~/.ssh/multihop_ed25519

Now you can use the standard git commands and connect to your gitlab instance through an SSH jumphost.