Un host jump (noto anche come jump server) è un host intermedio o un gateway SSH per una rete remota, attraverso il quale è possibile effettuare una connessione a un altro host in una zona di sicurezza dissimile, ad esempio una zona demilitarizzata (DMZ). Collega due zone di sicurezza dissimili e offre un accesso controllato tra di loro.
Un host jump dovrebbe essere altamente protetto e monitorato soprattutto quando si estende su una rete privata e una DMZ con server che forniscono servizi agli utenti su Internet.
Uno scenario classico è la connessione dal tuo desktop o laptop dalla rete interna della tua azienda, che è altamente protetta con firewall a una DMZ. Per gestire facilmente un server in una DMZ, è possibile accedervi tramite un host jump.
In questo articolo, dimostreremo come accedere a un server Linux remoto tramite un host jump e inoltre configureremo le impostazioni necessarie nelle configurazioni client SSH per utente.
Considerare il seguente scenario.
Nello scenario precedente, si desidera connettersi all’HOST 2, ma è necessario passare attraverso l’HOST 1, a causa dei privilegi di firewalling, routing e accesso. Ci sono una serie di validi motivi per cui sono necessari i jumphost..
Elenco Jumphost dinamico
Il modo più semplice per connettersi a un server di destinazione tramite un host jump sta usando il flag -J
dalla riga di comando. Questo dice a ssh di effettuare una connessione all’host jump e quindi stabilire un inoltro TCP al server di destinazione, da lì (assicurati di avere accesso SSH senza password tra le macchine).
$ ssh -J host1 host2
Se nomi utente o porte su macchine differiscono, specificarli sul terminale come mostrato.
$ ssh -J username@host1:port username@host2:port
Elenco Jumphosts multipli
La stessa sintassi può essere usata per fare salti su più server.
$ ssh -J username@host1:port,username@host2:port username@host3:port
Elenco Jumphost statico
Elenco jumphost statico significa, che si conosce il jumphost o jumphosts che è necessario collegare una macchina. Pertanto è necessario aggiungere il seguente ‘routing’ statico di jumphost nel file ~/.ssh/config
e specificare gli alias host come mostrato.
### First jumphost. Directly reachableHost vps1 HostName vps1.example.org### Host to jump to via jumphost1.example.orgHost contabo HostName contabo.example.org ProxyJump contabo
Ora prova a connetterti a un server di destinazione tramite un host jump come mostrato.
$ ssh -J vps1 contabo
Il secondo metodo consiste nell’utilizzare l’opzione ProxyCommand per aggiungere la configurazione jumphost nel file ~.ssh/config
o $HOME/.ssh/config
come mostrato.
In questo esempio, l’host di destinazione è contabo e il jumphost è vps1.
Host vps1HostName vps1.example.orgIdentityFile ~/.ssh/vps1.pemUser ec2-userHost contaboHostName contabo.example.orgIdentityFile ~/.ssh/contabovpsPort 22User adminProxy Command ssh -q -W %h:%p vps1
Dove il comando Proxy Command ssh -q -W %h:%p vps1
, significa eseguire ssh in modalità silenziosa (usando -q
) e in modalità stdio forwarding (usando -W
), reindirizzare la connessione attraverso un host intermedio (vps1).
Quindi prova ad accedere al tuo host di destinazione come mostrato.
$ ssh contabo
Il comando precedente aprirà prima una connessione ssh a vps1 in background effettuata dal ProxyCommand, e lì dopo, avviare la sessione ssh al server di destinazione contabo.
Per ulteriori informazioni, vedere la pagina man ssh o fare riferimento a: OpenSSH/Cookbxook/Proxy e Jump Hosts.
Questo è tutto per ora! In questo articolo, abbiamo dimostrato come accedere a un server remoto tramite un host jump. Utilizza il modulo di feedback qui sotto per porre domande o condividere i tuoi pensieri con noi.