Koncept bastionových hostitelů není ve výpočetní technice ničím novým. Baston hostitelé jsou obvykle veřejně přístupné, odolné systémy, které slouží jako vstupní bod k systémům za firewallem nebo jiným omezeným místem, a jsou obzvláště oblíbené s rozmachem cloud computingu.
ssh
Command má snadný způsob, jak využít hostitele bastion k připojení ke vzdálenému hostiteli pomocí jediného příkazu. Namísto prvního SSH na hostitele bastion a poté pomocí ssh
na baště pro připojení ke vzdálenému hostiteli ssh
může sám vytvořit počáteční a druhé připojení pomocí ProxyJump
.
ProxyJump
ProxyJump
nebo -J
flag, byl zaveden v ssh
verze 7.3. Chcete-li jej použít, zadejte hostitele bastionu, přes který se chcete připojit, za -J
příznak plus vzdálený hostitel:
$ ssh -J <bastion-host> <remote-host>
Můžete také nastavit konkrétní uživatelská jména a porty, pokud se mezi hostiteli liší:
$ ssh -J user@<bastion:port> <user@remote:port>
ssh
man (nebo manuálová) stránka (man ssh
) poznamenává, že lze zadat více názvů hostitelů oddělených čárkami, aby bylo možné přeskakovat řadu hostitelů:
$ ssh -J <bastion1>,<bastion2> <remote>
Tato funkce je užitečná, pokud existuje několik úrovní oddělení mezi baštou a konečným vzdáleným hostitelem. Například veřejný hostitel bašty poskytující přístup k sadě hostitelů „webové vrstvy“, v rámci které je možné přistupovat k další chráněné skupině „databázové vrstvy“.
Pevně kódování hostitelů proxy v ~/.ssh/config
-J
flag poskytuje flexibilitu pro snadnou specifikaci proxy a vzdálených hostitelů podle potřeby, ale pokud se pro připojení ke konkrétnímu vzdálenému hostiteli pravidelně používá konkrétní bastionový hostitel, ProxyJump
konfiguraci lze nastavit v ~/.ssh/config
pro automatické navázání spojení s baštou na cestě ke vzdálenému hostiteli:
### The Bastion Host
Host bastion-host-nickname
HostName bastion-hostname
### The Remote Host
Host remote-host-nickname
HostName remote-hostname
ProxyJump bastion-host-nickname
Pomocí příkladu konfigurace výše, když ssh
připojení je provedeno takto:
$ ssh remote-host-nickname
ssh
příkaz nejprve vytvoří připojení k hostiteli bastion bastion-hostname
(hostitel odkazovaný přezdívkou v ProxyJump
vzdáleného hostitele nastavení) před připojením ke vzdálenému hostiteli.
Alternativa:Přeposílání stdin a stdout
ProxyJump
je zjednodušený způsob použití funkce ssh
má již dlouhou dobu: ProxyCommand
. ProxyCommand
funguje tak, že přesměruje standardní vstup (stdin) a standardní výstup (stdout) ze vzdáleného počítače prostřednictvím hostitelů proxy nebo bastion.
ProxyCommand
sám o sobě je specifický příkaz používaný k připojení ke vzdálenému serveru – v případě předchozího příkladu by to byl manuál ssh
příkaz použitý k prvnímu připojení k baště:
$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host
%h:%p
argumenty do -W
příznak výše specifikujte pro předání standardu dovnitř a ven vzdálenému hostiteli (%h
) a port vzdáleného hostitele (%p
).
ProxyCommand
v ~/.ssh/config
Stejně jako u ProxyJump
, ProxyCommand
lze nastavit v ~/.ssh/config
soubor pro hostitele, kteří vždy používají tuto konfiguraci:
Host remote-host
ProxyCommand ssh bastion-host -W %h:%p
S tímto nastavením v ~/.ssh/config
, libovolný ssh
připojení ke vzdálenému hostiteli se provádí předáváním stdin a stdout prostřednictvím zabezpečeného připojení z bastion-host
.
ssh
příkaz je mocný nástroj. I když se většinou používá ve své nejjednodušší podobě, ssh user@hostname
, existují doslova desítky použití s příznaky a konfiguracemi pro navazování spojení z jednoho hostitele na druhého. Podívejte se na ssh
manuálová stránka (man ssh
) někdy objevíte všechny různé možnosti, které tento zdánlivě jednoduchý program nabízí.