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

2

Ich möchte eine Datei aus einer SSH-Sitzung auf meinen lokalen Host kopieren. Das Problem ist, dass die SSH-Sitzung von meinem lokalen Host aus nicht erreichbar ist. ssh1 ) Sitzung, dann Zugriff auf die betreffende SSH-Sitzung ( ssh2 ).

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

scp username@ssh1:username@ssh2:file .

Dies stellt eine Verbindung zu ssh1 her, aber anstatt sich als nächstes mit ssh2 zu verbinden, wird nach der Datei gesucht Benutzername @ ssh2: Datei . 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?

J. Schoeters
quelle

Antworten:

0

Ja, es gibt eine bessere Methode. Verwenden Sie die Mastersitzungsfunktion von SSH (neuere Versionen). Es 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 Master-Sitzungen 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 festlegen:

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, und die Konfigurationsberechtigungen sollten 644 sein.

Dann sollten Sie in der Lage sein, SSH oder SCP direkt von / zu Ihrem zweiten Server zu senden. Es können mehr Server wie folgt verkettet sein.

Jaroslav Kucera
quelle