Wie kopiere ich eine Datei aus einer verschachtelten SSH-Sitzung in einer anderen SSH-Sitzung auf den lokalen Host?

568
J. Schoeters

Ich möchte eine Datei von einer SSH-Sitzung auf meinen lokalen Host kopieren. Das Problem ist, dass die SSH-Sitzung nicht von meinem lokalen Host aus zugänglich ist. Ich muss zuerst eine Verbindung zu einer SSH- Sitzung ( SSH1 ) herstellen und dann auf die betreffende SSH- Sitzung ( SSH2 ) zugreifen .

Bisher habe ich versucht, scp auf diese Weise zu verwenden:

scp username@ssh1:username@ssh2:file . 

Dies stellt eine Verbindung zu ssh1 her, aber anstatt als nächstes eine Verbindung zu ssh2 herzustellen, sucht es nach der Datei username @ ssh2: file . Das funktioniert natürlich:

1. ssh username@ssh1 2. scp username@ssh2:file . 3. exit  4. scp username@ssh1:file . 

Dies ist jedoch zeitaufwendig, insbesondere bei der Eingabe von Passwörtern. Gibt es eine bessere Methode?

2

1 Antwort auf die Frage

0
Jaroslav Kucera

Ja, es gibt eine bessere Methode. Verwenden Sie die Mastersitzungsfunktion von SSH (neuere Versionen). Dadurch wird eine Kontrollsitzung erstellt, sodass Sie sich für einige Zeit nicht authentifizieren müssen.

Es ist hier beschrieben:

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing

Wahrscheinlich müssen Sie nur Ihre .ssh / config bearbeiten / erstellen. Fügen Sie dort Definitionen hinzu, die die Mastersitzungen steuern:

ControlMaster auto ControlPath ~/.ssh/cm_socket/%r@%h:%p ControlPersist 4h ServerAliveInterval 30 

Dann können Sie Ihre erste Hop-Server-Definition wie folgt angeben:

Host first_hop Hostname <your first host FQDN or IP> User <your user> 

Und der zweite Hop verwendet Ihren ersten Hop-Server als Proxy:

Host second_hop Hostname <your second host FQDN or IP> User <your user> ProxyCommand ssh -W %h:%p first_hop 

Vergessen Sie nicht, das Verzeichnis ~ / .ssh / cm_socket zu erstellen. Die Konfigurationsberechtigungen sollten 644 sein.

Dann sollten Sie SSH oder SCP direkt von / zu Ihrem zweiten Server ausführen können. Es können mehrere Server so verkettet werden.