The standard OpenSSH SSH client accepts the argument -J to allow users to utilize a jump host/jump box.

What I recently discovered (and isn’t immediately obvious from the documentation) is that you can actually specify multiple jump hosts – separated by a comma – and the SSH client will jump through each single one in order to reach the target.

For example, running the following command:

ssh -J root@system_a,root@system_b,root@system_c user@secret_system

would result in the SSH client connecting to system_a, then system_b, system_c, and finally accessing the secret_system using a connection proxied through all three jump hosts.