Lösung 1:
Sicher; Verwenden Sie einfach SSH-Portweiterleitung / Tunneling. Starten Sie mit dem folgenden Befehl eine SSH-Verbindung zum „Proxy“-Rechner:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
:der Computer, auf den Sie SSH-Zugriff haben$REMOTEHOST
:die Maschine, mit der sich $PROXYHOST verbinden kann, Sie aber nicht. Verwenden Sie einen Hostnamen oder eine IP mit$PROXYHOST
kann verwendet werden, um auf die Maschine zu verweisen$SSHPORT
:der Port, auf den sshd auf remotehost lauscht; höchstwahrscheinlich 22$LOCALPORT
:Der lokale ausgehende Port, den SSH auf Ihrem lokalen Computer öffnet, der an Port 22 auf$REMOTEHOST
weiterleitet
Lassen Sie diese Verbindung bestehen, damit der Tunnel weiter funktioniert. Vielleicht möchten Sie auch -N
hinzufügen an den Befehl, damit diese Verbindung keine Remote-Shell aufruft und Sie sie später nicht versehentlich schließen.
Sobald der Tunnel eingerichtet ist, gehen Sie wie folgt vor:
ssh -p $LOCALPORT localhost
Dadurch wird versucht, eine SSH-Verbindung zu Ihrem lokalen Computer über den Port herzustellen, der an $REMOTEHOST
weitergeleitet wird SSH-Port von .
Lösung 2:
Wenn Sie bereit sind, die Konfiguration auf Ihrem Client zu aktualisieren, können Sie Ihren Client so einrichten, dass er Ihre Gateway-Box als Proxy verwendet. Auf Ihrer Relay-Box muss netcat installiert sein, und für die besten Ergebnisse sollten Sie eine schlüsselbasierte Authentifizierung einrichten.
Hier ist, was ich in meiner .ssh/config verwende, um eine Verbindung über einen anderen Host herzustellen.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] "/bin/netcat -w 1 internal-ssh-host 22"
Mit dem obigen können Sie einfach den Befehl ssh internal-ssh-host-proxy ausführen von Ihrem Client-Rechner.
Wenn der Proxy-SSH-Host über den OpenSSH-Client 5.4 oder höher verfügt, benötigen Sie Netcat nicht und können stattdessen den integrierten Netcat-Modus verwenden.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] -W internal-ssh-host:22
Lösung 3:
Von den präsentierten Antworten ist die von Zordache die beste Gesamtlösung. Wenn Sie sich jedoch einfach ad-hoc verbinden möchten, ohne Ihre Konfiguration zu bearbeiten, verwenden Sie für die Nachwelt den -t
Flag, um ein Pseudo-Terminal zusammen mit der Ausführung von ssh direkt auf dem Relay zuzuweisen.
ssh -t relay.example.com ssh internal.example.com
Lösung 4:
Sie können Verbindungen mit OpenSSH automatisch weiterleiten. In Ihrem ~/.ssh/authorized_keys
-Datei können Sie einen auszuführenden Befehl angeben, der ein SSH zu einem zweiten Computer sein könnte.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
Am Ende sehen Sie zwei Eingabeaufforderungen für Password:
:eine für den Relay-Server und eine für den Zielserver. Sie können dieses Verhalten jederzeit entfernen, indem Sie Zertifikate verwenden.