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í.