Tak, używając ProxyCommand
w konfiguracji SSH.
Utwórz plik konfiguracyjny SSH w swoim katalogu domowym (chyba że chcesz zrobić to dla całego systemu) ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Teraz możesz bezpośrednio dotrzeć do maszyny A.
ssh user@internalmachine
Zauważ też, że teraz masz dla niego pojedynczą nazwę docelową hosta SSH, możesz jej używać również w innych aplikacjach. Na przykład:
SCP do kopiowania plików.
scp somefile user@internalmachine:~/
W aplikacjach GUI:
użyj sftp://user@internalmachine/
jako lokalizacji do przeglądania na maszynie.
Oparte na KDE (Dolphin): użyj fish://user@internalmachine/
Notatki
Zmień hostname.or.IP.address.internal.machine
i port ( 22
) na maszynie, do której chcesz dotrzeć, tak jakbyś z unibroker
maszyny.
W zależności od wersji netcata na hoście unibrokera -q0
opcję tę należy pominąć. W odniesieniu do uwierzytelnienia; w zasadzie konfigurujesz dwa połączenia SSH ze stacji roboczej. Oznacza to, że zarówno host unibrokera, jak i host maszyny wewnętrznej są weryfikowane / uwierzytelniane jeden po drugim (zarówno dla pary kluczy / hasła, jak i weryfikacji klucza hosta).
Wyjaśnienie
Takie podejście z użyciem ProxyCommand
i „netcat” jest tylko jednym ze sposobów na to. Podoba mi się to, ponieważ mój klient SSH komunikuje się bezpośrednio z maszyną docelową, dzięki czemu mogę zweryfikować klucz hosta od mojego klienta i mogę korzystać z uwierzytelniania mojego klucza publicznego bez używania innego klucza w brokerze.
Każdy Host
określa początek nowej sekcji hosta. Hostname
to docelowa nazwa hosta lub adres IP tego hosta. User
jest to, co podasz jako część użytkownika ssh user@hostname
.
ProxyCommand
będzie używany jako rura do maszyny docelowej. Poprzez użycie SSH do pierwszego komputera i bezpośrednie skonfigurowanie nc
stamtąd prostego „netcat” ( ) do celu, jest to po prostu zwykły tekst przekazywany do wewnętrznego komputera od brokera pomiędzy nimi. Te -q
opcje są do milczenia żadnego wyjścia (tylko osobiste preferencje).
Upewnij się, że na brokerze jest zainstalowany program Netcat (zwykle dostępny domyślnie w systemie Ubuntu) - netcat-openbsd lub netcat-traditional .
Pamiętaj, że nadal używasz SSH z szyfrowaniem dwa razy tutaj. Podczas gdy kanał Netcat jest zwykłym tekstem, twój klient SSH na twoim komputerze skonfiguruje inny zaszyfrowany kanał z ostateczną maszyną docelową.