Ricerca nel sito web

Come utilizzare SSH ProxyJump e SSH ProxyCommand in Linux


Breve: in questa guida mostriamo come utilizzare i comandi SSH ProxyJump e SSH ProxyCommand durante la connessione a un server jump.

Nella nostra precedente guida su come configurare un Jump Server SSH, abbiamo trattato il concetto di Bastion Host. Un Bastion host o un Jump Server è un dispositivo intermedio a cui un client SSH si connette prima di accedere al sistema Linux remoto di destinazione. Un server SSH Jump funge da gateway verso le vostre risorse IT, riducendo così la superficie di attacco.

I comandi SSH ProxyJump e ProxyCommand determinano il modo in cui un client si connette al server remoto tramite il jump server, jump host o server bastionato.

Questa guida punta i riflettori su SSH ProxyJump e SSH Proxy Command in Linux.

Connetti Linux remoto utilizzando il comando SSH ProxyJump

Il comando ProxyJump è indicato con il flag -J. È stato introdotto nella versione 7.3 del server OpenSSH e ti aiuta a stabilire una connessione a una destinazione remota saltando attraverso un bastion o un jump server.

La sintassi seguente mostra come viene utilizzata questa opzione:

ssh -J <jump-server> <remote-target>

Nel caso di più server bastion o jump, la sintassi assume il seguente formato.

ssh -J <jump-server-1> <jump-server-2> <remote-target>

In entrambi i casi, accederai come utente root in ogni fase del processo. Questo non è l'ideale per motivi di sicurezza, quindi potresti voler creare utenti diversi in ogni istanza.

È possibile specificare esplicitamente diversi utenti e porte SSH come mostrato.

ssh -J <user@jump-host:port> <user@remote-target:port>

Per dimostrare il flag ProxyJump in azione, abbiamo una semplice configurazione come mostrato.

Jump Server IP:		173.82.232.55		User: james
Remote Target IP:	173.82.227.89		User: tecmint

Per connettersi alla destinazione remota utilizzando il server Jump, il comando sarà simile al seguente.

ssh -J [email  [email 

Il comando richiederà la password utente del server di salto, seguita successivamente dalla password del sistema di destinazione in base alla quale ti verrà concesso l'accesso al sistema di destinazione.

Configurazione degli host proxy nel file ~/.ssh/config

Se utilizzi regolarmente un bastion specifico per connetterti a una destinazione remota specifica, puoi aggiungere la seguente configurazione ProxyJump nel file ~/.ssh/config per rendere la connessione fluida . Quando ciò accade, verrai autenticato solo una volta e ciò accade solo sulla destinazione remota.

Host host-jump
User james
Hostname 173.82.232.55

Host host_destination
User tecmint
Hostname 173.82.227.89
Port 22

Utilizzando la configurazione precedente, è possibile effettuare la connessione alla destinazione come mostrato.

ssh -J host_destination

Connetti Linux remoto utilizzando il comando ProxyCommand SSH

Prima di SSH Proxy Jump, ProxyCommand era l'unico modo per saltare gli host per raggiungere la destinazione remota. Funziona inoltrando lo stdin (standard in) e lo stdout (standard out) dalla destinazione remota attraverso il jump server o il bastion.

Il ProxyCommand assume la seguente sintassi.

ssh -o ProxyCommand="ssh -W %h:%p <jump server>" <remote target>

Qui, gli argomenti -W agli argomenti %h:%p inoltrano lo stdin all'host remoto (%h) e al telecomando porta dell'host (%p).

Per mettere in atto il comando, ecco come apparirebbe il nostro comando

ssh -o ProxyCommand="ssh -W %h:%p 173.82.232.55" 173.82.227.89

Configurazione di ProxyCommand nel file ~/.ssh/config

Naturalmente, digitare l'intero comando è noioso e richiede tempo. Per evitare di digitare un comando così lungo, aggiungi le seguenti righe di codice al tuo file ~/.ssh/config.

Host host-destination
Hostname 173.82.227.89
ProxyCommand ssh -q -W %h:%p host-jump

Salva ed esci.

Ora tutto ciò che devi fare è eseguire il seguente comando per connetterti al server remoto.

ssh host-destination
Conclusione

In questa guida abbiamo dimostrato come funzionano i comandi ProxyJump e ProxyCommand. In genere, ProxyJump si presenta come un'alternativa migliore a ProxyCommand e fornisce un modo più semplice e diretto per connettersi a una destinazione remota tramite un host Jump.