Hur man använder SSH ProxyJump och SSH ProxyCommand i Linux


Kort: I den här guiden visar vi hur du använder SSH ProxyJump och SSH ProxyCommand-kommandon när du ansluter till en hoppserver.

I vår tidigare guide om hur man ställer in en SSH Jump Server täckte vi konceptet med en Bastion Host. En Bastion-värd eller en Jump-server är en mellanliggande enhet som en SSH-klient ansluter till först innan den får åtkomst till det fjärranslutna Linux-systemet. En SSH Jump-server fungerar som en gateway till dina IT-resurser och minskar därmed attackytan.

Kommandona SSH ProxyJump och ProxyCommand bestämmer hur en klient ansluter till fjärrservern via hoppservern, hoppvärden eller bastionservern.

Den här guiden belyser SSH ProxyJump och SSH Proxy Command i Linux.

Innehållsförteckning

Anslut Remote Linux med SSH ProxyJump Command

Kommandot ProxyJump betecknas med flaggan -J. Den introducerades i OpenSSH-serverversion 7.3 och hjälper dig att göra en anslutning till ett fjärrmål genom att hoppa över en bastion eller en hoppserver.

Syntaxen nedan visar hur detta alternativ används:

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

I fallet med flera bastions- eller hoppservrar har syntaxen följande format.

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

I båda fallen kommer du att vara inloggad som root-användare varje steg på vägen. Detta är inte idealiskt på grund av säkerhetsskäl, så du kanske vill skapa olika användare i varje instans.

Du kan uttryckligen ange olika användare och SSH-portar som visas.

$ ssh -J <[email :port> <[email :port>

För att demonstrera ProxyJump-flaggan i aktion har vi en enkel installation som visas.

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

För att ansluta till fjärrmålet med hjälp av Jump-servern ser kommandot ut enligt följande.

$ ssh -J [email  [email 

Kommandot kommer att uppmana dig att ange hoppserverns användarlösenord, sedan följt av målsystemets lösenord som du kommer att ges åtkomst till målsystemet.

Om du regelbundet använder en specifik bastion för att ansluta till ett specifikt fjärrmål, kan du lägga till följande ProxyJump-konfiguration i filen ~/.ssh/config för att göra anslutningen sömlös. När detta händer kommer du bara att autentiseras en gång och detta händer bara på fjärrmålet.

Host host-jump
User james
Hostname 173.82.232.55

Host host_destination
User tecmint
Hostname 173.82.227.89
Port 22

Med hjälp av ovanstående konfiguration kan du göra anslutningen till målet enligt bilden.

$ ssh -J host_destination

Anslut Remote Linux med SSH ProxyCommand Command

Innan SSH Proxy Jump var ProxyCommand det enda sättet att hoppa värdar för att nå fjärrmålet. Det fungerar genom att vidarebefordra stdin (standard in) och stdout (standard ut) från fjärrmålet genom hoppservern eller bastionen.

ProxyCommand använder följande syntax.

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

Här vidarebefordrar -W till %h:%p argumenten stdin och ut till fjärrvärden (%h) och fjärrkontrollen värdens port (%p).

För att omsätta kommandot i handling, så här skulle vårt kommando se ut

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

Naturligtvis är det tråkigt och tidskrävande att skriva hela kommandot. För att undvika att skriva ett så långt kommando, lägg till följande kodrader i filen ~/.ssh/config.

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

Spara och avsluta.

Nu behöver du bara köra följande kommando för att ansluta till fjärrservern.

$ ssh host-destination

I den här guiden demonstrerade vi hur kommandon ProxyJump och ProxyCommand fungerar. Generellt sett framstår ProxyJump som ett bättre alternativ till ProxyCommand och ger ett enklare och sömlöst sätt att ansluta till ett fjärrmål genom en hoppvärd.