Ich würde Folgendes in Ihrem .ssh/config
vorschlagen :
Host C
User user
ProxyCommand ssh -W %h:%p [email protected]
Ich bin nicht viel sicherer, wenn Host B nicht vertrauenswürdig ist und für scp und sftp funktioniert.
Wie in dieser Antwort beschrieben, können Sie den ProxyCommand
verwenden Direktive einen ssh
haben host leiten Sie transparent an einen dritten Host weiter:
Angenommen, Sie haben die folgenden drei Hosts:
workstation.example.com
- Dies ist die Maschine, an der Sie physisch arbeitenproxy.example.com
- Dies ist der Rechner, über den Sie Ihren SSH-Datenverkehr leitenendpoint.example.com
- Hier soll der Traffic letztendlich landen
In ~/.ssh/config
auf workstation
, fügen Sie Folgendes hinzu:
Host endpoint
User endpointUser # set this to the username on the endpoint host
HostName endpoint.example.com
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
Auf der proxy
Host, vergewissern Sie sich, dass nc
(netcat) ist installiert.
Dann auf workstation
, können Sie ssh endpoint
oder sftp endpoint
und Sie werden über Ihren Proxy-Host transparent an die Maschine weitergeleitet. scp
wird auch funktionieren.
Es ist möglich und relativ einfach, selbst wenn Sie Zertifikate zur Authentifizierung verwenden müssen (typisch in AWS-Umgebungen).
Der folgende Befehl kopiert Dateien von einem remotePath auf server2 direkt auf Ihren Computer unter localPath. Intern wird die scp-Anfrage über server1 weitergeleitet.
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Wenn Sie stattdessen die Kennwortauthentifizierung verwenden, versuchen Sie es mit
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Wenn Sie auf beiden Servern dieselben Benutzerdaten verwenden:
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>