Antworten:
Sicher; Verwenden Sie einfach SSH-Port-Weiterleitung / Tunneling. Starten Sie eine SSH-Verbindung zum "Proxy" -Computer mit dem folgenden Befehl:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST: Der Computer, auf den Sie SSH-Zugriff haben$REMOTEHOST: die Maschine, mit der $ PROXYHOST eine Verbindung herstellen kann, die Sie jedoch nicht können. Verwenden Sie einen Hostnamen oder eine IP-Adresse, $PROXYHOSTmit der auf den Computer verwiesen werden kann$SSHPORT: der Port, auf den sshd auf remotehost wartet; höchstwahrscheinlich 22$LOCALPORT: Der lokale ausgehende Port SSH wird auf Ihrem lokalen Computer geöffnet, der an Port 22 weiterleitet $REMOTEHOSTLassen Sie diese Verbindung offen, damit der Tunnel funktioniert. Möglicherweise möchten Sie -Ndem Befehl auch etwas hinzufügen , damit diese Verbindung keine Remote-Shell aufruft und Sie sie später nicht versehentlich schließen.
Gehen Sie nach dem Aufbau des Tunnels wie folgt vor:
ssh -p $LOCALPORT localhost
Dadurch wird versucht, eine SSH-Verbindung zu Ihrem lokalen Computer an dem Port herzustellen, der an den $REMOTEHOSTSSH-Port des Computers weitergeleitet wird .
Wenn Sie bereit sind, die Konfiguration auf Ihrem Client zu aktualisieren, können Sie Ihren Client so einrichten, dass Ihre Gateway-Box als Proxy verwendet wird . Auf Ihrer Relay-Box muss netcat installiert sein. Um die besten Ergebnisse zu erzielen, sollten Sie eine schlüsselbasierte Authentifizierung einrichten.
Folgendes verwende ich in meiner .ssh / config, um eine Verbindung über einen anderen Host herzustellen.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"
Mit dem oben genannten können Sie einfach den Befehl ssh internal-ssh-host-proxy von Ihrem Client-Computer ausführen .
Wenn der Proxy-SSH-Host über den OpenSSH-Client 5.4 oder höher verfügt, benötigen Sie kein Netcat. Stattdessen können Sie den integrierten Netcat-Modus verwenden.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
Von den vorgestellten Antworten ist Zordache die beste Gesamtlösung. Wenn Sie jedoch für die Nachwelt einfach eine Ad-hoc-Verbindung herstellen möchten, ohne Ihre Konfiguration zu bearbeiten, verwenden Sie das -tFlag, um ein Pseudo-Terminal zuzuweisen und ssh direkt auf dem Relay auszuführen.
ssh -t relay.example.com ssh internal.example.com
Sie können Verbindungen mit OpenSSH automatisch weiterleiten. In Ihrer ~/.ssh/authorized_keysDatei können Sie einen auszuführenden Befehl angeben, der eine SSH für einen zweiten Computer sein kann.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
Am Ende werden zwei Eingabeaufforderungen angezeigt Password:: eine für den Relay-Server und eine für den Zielserver. Sie können dieses Verhalten jederzeit mithilfe von Zertifikaten entfernen.