Serwer przekaźników SSH z OpenSSH

10

Czy można używać OpenSSH do przekazywania do innych urządzeń obsługujących SSH, takich jak przełączniki routerów itp. Czy jest to coś, co można zrobić bez tworzenia aplikacji Linux na zamówienie?

Dzięki

Łowca
źródło

Odpowiedzi:

9

Pewnie; wystarczy użyć przekierowania / tunelowania portów SSH. Uruchom połączenie ssh z maszyną „proxy” za pomocą następującego polecenia:

ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
  • $PROXYHOST: komputer, do którego masz dostęp SSH
  • $REMOTEHOST: maszyna, z którą $ PROXYHOST może się połączyć, ale nie możesz. Użyj nazwy hosta lub adresu IP, które $PROXYHOSTmogą być używane w odniesieniu do urządzenia
  • $SSHPORT: port, którego nasłuchuje sshd na zdalnym hoście; najprawdopodobniej 22
  • $LOCALPORT: lokalny port wychodzący SSH otwiera się na twoim komputerze lokalnym, który przekazuje do portu 22 na $REMOTEHOST

Pozostaw to połączenie, aby tunel działał. Możesz także dodać -Ndo polecenia, aby to połączenie nie wywoływało zdalnej powłoki i nie zamknąłbyś jej przypadkowo później.

Po utworzeniu tunelu wykonaj następujące czynności:

ssh -p $LOCALPORT localhost

Spowoduje to próbę połączenia SSH z komputerem lokalnym na porcie, który jest przekierowany do $REMOTEHOSTportu SSH.

Brad Beyenhof
źródło
3

Jeśli chcesz zaktualizować konfigurację na kliencie, możesz skonfigurować klienta tak, aby używał skrzynki bramy jako serwera proxy . Twój przekaźnik będzie wymagał instalacji netcat, a dla uzyskania najlepszych rezultatów będziesz chciał skonfigurować uwierzytelnianie oparte na kluczach.

Oto, czego używam w moim .ssh / config do łączenia się z innym hostem.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"

Za pomocą powyższego możesz po prostu uruchomić polecenie ssh internal-ssh-host-proxy z komputera klienckiego.

Jeśli hostem SSH proxy jest klient OpenSSH 5.4 lub nowszy, nie potrzebujesz netcat, a zamiast tego możesz użyć wbudowanego trybu netcat.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
Zoredache
źródło
Przepraszam, ale to nie używa OpenSSH. Używasz netcata do przekazywania między serwerem klienta a serwerem?
aHunter
Korzysta z OpenSSH w połączeniu z bardzo popularnym narzędziem, które jest dostępne prawie wszędzie. To nie jest czysty ssh, ale nie nazwałbym tego na zamówienie.
Zoredache,
Nie. Zgadzam się, że to nie jest zamówienie, ale chciałem wiedzieć, czy można przekazać za pomocą OpenSSH, abyś używał standardowego klienta ssh i ssh do skrzynki z OpenSSH, która następnie automatycznie zapewnia dostęp ssh do innej maszyny lub wielu maszyn. Dzięki
aHunter
1
@aHunter, dla przypomnienia istnieje teraz „tryb netcat” wbudowany w openssh 5.4, który zapewnia czyste połączenie openssh - blog.rootshell.be/2010/03/08/openssh-new-feature-netcat-mode brak narzędzi zewnętrznych są potrzebne.
Zoredache
3

Z przedstawionych odpowiedzi Zordache's jest najlepszym ogólnym rozwiązaniem. Jednak dla potomnych, jeśli chcesz po prostu połączyć ad-hoc bez edytowania konfiguracji, użyj -tflagi, aby przydzielić pseudo terminal wraz z uruchomieniem ssh bezpośrednio na przekaźniku.

ssh -t relay.example.com ssh internal.example.com
bahamat
źródło
najprostsze rozwiązanie bez edycji plików
Kartoch,
2

Możesz automatycznie przekazywać połączenia za pomocą OpenSSH. W swoim ~/.ssh/authorized_keyspliku możesz określić polecenie do wykonania, które może być SSH dla drugiego komputera.

[ssh client] ----> [ssh relay server] ----> [ssh target server]
    you          modified authorized_keys      target machine

To, co zobaczysz, to dwa monity Password:: jeden dla serwera przekazywania i jeden dla serwera docelowego. Zawsze możesz usunąć to zachowanie za pomocą certyfikatów.

sybreon
źródło
brzmi idealnie jak skonfigurowałbyś sshd w openssh?
aHunter,
Patrz sekcja [Forced Commands] [1] w [1] eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
sybreon
to niesamowity pomysł. Ostatnią rzeczą, którą chcę zrobić, to otworzyć 100 dyskretnych portów w mojej zaporze z trasami. Następnie powtórz, aby uzyskać redundancję. Sugeruje to, że mogę utworzyć 100 kluczy SSH i połączyć każdy ze swoim własnym serwerem. Sugeruje to również, że mogę całkowicie zablokować serwer przekazywania. Niektórzy mogą nazywać to VPN, ale widzę to inaczej.
Richard