jump host (znany również jako jump server) to host pośredniczący lub brama SSH do zdalnej sieci, za pośrednictwem której można nawiązać połączenie z innym hostem w odmiennej strefie bezpieczeństwa, na przykład strefie zdemilitaryzowanej (DMZ). Łączy dwie odmienne strefy bezpieczeństwa i oferuje kontrolowany dostęp między nimi.
host jump powinien być wysoce zabezpieczony i monitorowany, zwłaszcza gdy obejmuje sieć prywatną i DMZ z serwerami świadczącymi usługi użytkownikom w Internecie.
klasycznym scenariuszem jest połączenie z komputera stacjonarnego lub laptopa z wewnętrznej sieci firmy, która jest wysoce zabezpieczona zaporą ogniową do DMZ. Aby łatwo zarządzać serwerem w DMZ, możesz uzyskać do niego dostęp za pośrednictwem hosta skoku.
w tym artykule zademonstrujemy, jak uzyskać dostęp do zdalnego serwera Linux za pośrednictwem hosta skokowego, a także skonfigurujemy niezbędne ustawienia w konfiguracjach klienta SSH dla każdego użytkownika.
rozważ następujący scenariusz.
w powyższym scenariuszu chcesz połączyć się z hostem 2, ale musisz przejść przez HOST 1, ze względu na zaporę, routing i uprawnienia dostępu. Istnieje wiele ważnych powodów, dla których jumphosts są potrzebne..
dynamiczna lista skoków
najprostszym sposobem połączenia się z serwerem docelowym za pomocą hosta skoków jest użycie flagi -J
z wiersza poleceń. To mówi ssh, aby nawiązać połączenie z hostem skoku, a następnie ustanowić przekierowanie TCP do serwera docelowego, stamtąd (upewnij się, że masz hasło logowania SSH między maszynami).
$ ssh -J host1 host2
jeśli nazwy użytkowników lub porty na komputerach różnią się, określ je na terminalu, jak pokazano.
$ ssh -J username@host1:port username@host2:port
lista wielu skoków
ta sama składnia może być użyta do wykonywania skoków na wielu serwerach.
$ ssh -J username@host1:port,username@host2:port username@host3:port
statyczna lista Jumphostów
statyczna lista jumphostów oznacza, że znasz jumphost lub jumphosty, które są potrzebne do podłączenia maszyny. Dlatego musisz dodać następujący statyczny jumphost 'routing’ w pliku ~/.ssh/config
i określić aliasy hostów, jak pokazano.
### First jumphost. Directly reachableHost vps1 HostName vps1.example.org### Host to jump to via jumphost1.example.orgHost contabo HostName contabo.example.org ProxyJump contabo
teraz spróbuj połączyć się z serwerem docelowym za pomocą hosta skoku, jak pokazano.
$ ssh -J vps1 contabo
drugą metodą jest użycie opcji ProxyCommand, aby dodać konfigurację jumphost do pliku ~.ssh/config
lub $HOME/.ssh/config
, jak pokazano.
w tym przykładzie docelowym hostem jest contabo, a jumphost to vps1.
Host vps1HostName vps1.example.orgIdentityFile ~/.ssh/vps1.pemUser ec2-userHost contaboHostName contabo.example.orgIdentityFile ~/.ssh/contabovpsPort 22User adminProxy Command ssh -q -W %h:%p vps1
gdzie polecenie Proxy Command ssh -q -W %h:%p vps1
oznacza uruchomienie ssh w trybie cichym (przy użyciu -q
) i w trybie przekazywania stdio (przy użyciu -W
), przekierowanie połączenia przez host pośredni (vps1).
następnie spróbuj uzyskać dostęp do docelowego hosta, jak pokazano.
$ ssh contabo
powyższe polecenie najpierw otworzy połączenie ssh z vps1 w tle realizowane przez ProxyCommand, a tam po uruchomieniu sesji ssh do serwera docelowego contabo.
aby uzyskać więcej informacji, zobacz stronę podręcznika ssh lub zobacz: OpenSSH/Cookbxook/Proxy i Jump Hosts.
to wszystko na razie! W tym artykule pokazaliśmy, jak uzyskać dostęp do zdalnego serwera za pomocą hosta skoku. Skorzystaj z poniższego formularza, aby zadać pytania lub podzielić się z nami swoimi przemyśleniami.