
stdout
auf einem CentOS-Server muss auf einen anderen CentOS-Server weitergeleitet werden stdin
. Ist das möglich?
Aktualisieren
ScottPack, MikeyB und jofel haben alle gültige Antworten. Ich habe Scott die Antwort gegeben, denn obwohl meine Frage Sicherheit nicht als Voraussetzung spezifizierte, ist es immer gut, auf Nummer sicher zu gehen. Die Vorschläge der anderen beiden Kollegen werden jedoch auch funktionieren.
Antwort1
Dies ist ein uneingeschränktes Ja.
Wenn man ssh
mit einen Befehl auf einem Remote-Server ausführt, führt es eine Art ausgefallene interne Eingabe-/Ausgabeumleitung durch. Tatsächlich finde ich, dass dies eine der subtil netteren Funktionen von OpenSSH ist. Insbesondere wenn Sie mit einen beliebigen Befehl auf einem Remote-System ausführen, wird ssh und auf das des ausgeführten Befehls ssh
abgebildet .STDIN
STDOUT
Nehmen wir als Beispiel an, Sie möchten ein Backup-Tarball erstellen, es aber nicht lokal speichern wollen oder können. Werfen wir einen Blick auf diese Syntax:
$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"
Wir erstellen ein Tarball und schreiben es in STDOUT
, normales Zeug. Da wir SSH verwenden, um einen Remote-Befehl auszuführen, wird STDIN auf von abgebildet STDIN
. cat
Was wir dann in eine Datei umleiten.
Antwort2
Eine praktische Möglichkeit zum Übertragen von Daten zwischen Hosts, wenn Sie sich keine Gedanken über die Sicherheit der Leitung machen müssen, ist die Verwendung netcat
an beiden Enden der Verbindung.
Dadurch können Sie sie auch asynchron einrichten:
Führen Sie auf dem „Empfänger“ (eigentlich handelt es sich um eine bidirektionale Kommunikation, aber es ist einfacher, es sich so vorzustellen) Folgendes aus:
nc -l -p 5000 > /path/to/backupfile.tar
Und auf dem „Absender“ führen Sie Folgendes aus:
tar cf - /path/to/dir | nc 1.2.3.4 5000
Antwort3
Ein sehr leistungsfähiges Werkzeug zum Erstellen uni- und bidirektionaler Verbindungen istsocat
. Um einen kurzen Einblick in die Möglichkeiten zu erhalten, schauen Sie sich die Beispiele in dermanpage.
Es ersetzt netcat
ähnliche Tools vollständig und unterstützt SSL-verschlüsselte Verbindungen. Für Anfänger ist es vielleicht nicht einfach genug, aber es ist zumindest gut zu wissen, dass es existiert.
Antwort4
Versuchen Sie, Ihren öffentlichen SSH-Schlüssel mit nur einem Befehl auf einem anderen Host abzulegen
ssh [email protected] 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub