Odpowiedzi:
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 $REMOTEHOSTPozostaw 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.
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
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
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.