GNU/Linux >> Linux Esercitazione >  >> Linux

SSH a host remoti tramite un proxy o un bastion con ProxyJump

Il concetto di bastion host non è una novità per l'informatica. Gli host Baston sono in genere sistemi rinforzati rivolti al pubblico che fungono da punto di accesso ai sistemi dietro un firewall o un'altra posizione riservata e sono particolarmente apprezzati con l'ascesa del cloud computing.

Il ssh command offre un modo semplice per utilizzare bastion host per connettersi a un host remoto con un singolo comando. Invece di inviare prima SSH all'host bastion e quindi utilizzare ssh sul bastione per connettersi all'host remoto, ssh può creare autonomamente la prima e la seconda connessione utilizzando ProxyJump .

ProxyJump

Il ProxyJump o il -J flag, è stato introdotto in ssh versione 7.3. Per usarlo, specifica il bastion host attraverso il quale connetterti dopo il -J flag, più l'host remoto:

$ ssh -J <bastion-host> <remote-host>

Puoi anche impostare nomi utente e porte specifici se differiscono tra gli host:

$ ssh -J user@<bastion:port> <user@remote:port>

Il ssh pagina man (o manuale) (man ssh ) rileva che è possibile specificare più nomi host separati da virgole per passare da una serie di host:

$ ssh -J <bastion1>,<bastion2> <remote>

Questa funzione è utile se sono presenti più livelli di separazione tra un bastione e l'host remoto finale. Ad esempio, un host bastion pubblico che dà accesso a un set di host di "livello web", all'interno del quale è possibile accedere a un ulteriore gruppo protetto di "livello di database".

Host proxy hard-coding in ~/.ssh/config

Il -J flag fornisce flessibilità per specificare facilmente proxy e host remoti secondo necessità, ma se un host bastion specifico viene utilizzato regolarmente per connettersi a un host remoto specifico, il ProxyJump la configurazione può essere impostata in ~/.ssh/config per effettuare automaticamente la connessione al bastione in rotta verso l'host remoto:

### The Bastion Host
Host bastion-host-nickname
  HostName bastion-hostname

### The Remote Host
Host remote-host-nickname
  HostName remote-hostname
  ProxyJump bastion-host-nickname

Utilizzando la configurazione di esempio sopra, quando un ssh la connessione avviene in questo modo:

$ ssh remote-host-nickname

Il ssh Il comando prima crea una connessione al bastion host bastion-hostname (l'host a cui si fa riferimento, per nickname, nel ProxyJump dell'host remoto impostazioni) prima di connettersi all'host remoto.

Un'alternativa:inoltro stdin e stdout

ProxyJump è il modo semplificato per utilizzare una funzione che ssh ha avuto per molto tempo: ProxyCommand . ProxyCommand funziona inoltrando standard in (stdin) e standard out (stdout) dalla macchina remota tramite proxy o bastion host.

Il ProxyCommand stesso è un comando specifico utilizzato per connettersi a un server remoto:nel caso dell'esempio precedente, sarebbe il manuale ssh comando utilizzato per la prima connessione al bastione:

$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host

Il %h:%p argomenti al -W flag sopra specificare di inoltrare lo standard in entrata e in uscita all'host remoto (%h ) e la porta dell'host remoto (%p ).

ProxyCommand in ~/.ssh/config

Come con ProxyJump , ProxyCommand può essere impostato in ~/.ssh/config file per gli host che utilizzano sempre questa configurazione:

Host remote-host
  ProxyCommand ssh bastion-host -W %h:%p

Con questa impostazione in ~/.ssh/config , qualsiasi ssh la connessione all'host remoto viene eseguita inoltrando stdin e stdout tramite una connessione protetta da bastion-host .

Il ssh il comando è uno strumento potente. Sebbene possa essere utilizzato principalmente nella sua forma più semplice, ssh user@hostname , ci sono letteralmente dozzine di usi, con flag e configurazioni per effettuare connessioni da un host all'altro. Dai un'occhiata a ssh la pagina di manuale di (man ssh ) qualche volta per scoprire tutte le diverse opzioni disponibili con questo programma apparentemente semplice.


Linux
  1. Come ssh tramite host (jumpserver) per raggiungere un altro server

  2. Ssh:copia un file sul sistema locale con Ssh?

  3. Ssh – Come evitare che Ssh chieda il permesso?

  4. Ssh – Scp attraverso più host?

  5. Come connettere l'host remoto usando il comando ssh

Comandi SSH in Linux con esempi di utilizzo

Come connettersi a Internet tramite un server remoto tramite connessione Ssh?

Come posso utilizzare SSH con un proxy SOCKS 5?

Può eseguire il ping/ssh attraverso la LAN ma non con il Wi-Fi

sshfs non riesce con l'host remoto disconnesso

Rsync con SSH che richiede la password remota