Kopieren Sie Dateien ohne Verschlüsselung (ssh) in das lokale Netzwerk

22

scpfunktioniert in allen Fällen gut, aber der Raspberry Pi ist zu schwach, um Dateien effizient in eine sichere Umgebung (LAN) zu kopieren. Die theoretisch möglichen 6,75 MB / s über 54 Mbit WLAN schrumpfen auf ca. 1,1 MB / s.

Gibt es eine Möglichkeit, Dateien ohne Verschlüsselung aus der Ferne zu kopieren?

Es sollte ein CLI-Befehl ohne Abhängigkeiten von zusätzlichen Diensten (FTP, Samba) oder zumindest mit einem Minimum an Konfiguration sein. Ich meine, ein Standardtool, das mit Standardprogrammen / -diensten (wie scp / ssh) ziemlich gut funktioniert.

ManuelSchneid3r
quelle
2
"ohne Abhängigkeiten" ist praktisch nicht möglich. du brauchst immer ein programm, das auf einer seite "lauscht" (wie der ssh / sftp server bei der scp
verwendung
2
Was ist mit Netcat ?
Jegoritsch
Okay, du hast Recht. Ich werde die Anforderungen ändern
ManuelSchneid3r
@ umläute es sei denn der Client kann ssh / rsh zum Server und über stdin / out kommunizieren. Früher war das Weiterleiten von Teer an einen remote aufgerufenen Teer die einfache Möglichkeit, Verzeichnisbäume von einem Computer auf einen anderen zu kopieren.
Thorbjørn Ravn Andersen

Antworten:

14

Vielleicht suchen Sie nach einem Programm rcp, das die Remote-Ausführung über ausführt, rshsodass Sie sich darauf verlassen müssen und bedenken müssen, dass die gesamte Kommunikation unsicher ist.

YoMismo
quelle
12

Sie können die Verschlüsselung auf ssh / scp nicht vollständig deaktivieren, aber Sie können sie zwingen, eine schwächere Verschlüsselung zu verwenden, die viel weniger CPU-intensiv ist. Stellen Sie sicher, dass die Komprimierung in Ihrer ssh_config oder in der Befehlszeile nicht aktiviert ist, und fügen Sie -c arcfour,blowfish-cbcsie Ihrer scp-Befehlszeile hinzu, um schwächere Chiffren auszuwählen.

doneal24
quelle
1
Das ist eine schöne Idee. Ist dies für die hostspezifische Konfiguration möglich? (.ssh / config)
ManuelSchneid3r
3
@ ManuelSchneid3r: Ja: HostVerwenden Sie Ciphers arcfour,blowfish-cbcin einem Abschnitt in Ihrer ssh_config, um den obigen -cSchalter zu spiegeln . Wenn Ihre CPUs jedoch den AES-NI-Befehlssatz unterstützen, würde ich versuchen, zu wechseln [email protected](ja, das ist der Chiffrenname, einschließlich @des Materials), der das blitzschnelle (mit AES-NI) AES128-GCM verwenden wird.
Reid
Ich würde Blowfish nicht wirklich als schwache Chiffre bezeichnen, da AEs im Allgemeinen (dh nicht R-Pi) durch die Beschleunigung in Watt verstärkt werden könnten.
Peterph
9

Ich habe dieses schnelle Skript geschrieben:

#!/bin/bash

ssh "$1" "nc -l 2020 > \"$2\" &"
pv "$2" | nc "$1" 2020

Das Senden an den Host und die zu sendende Datei erfordert zwei Argumente. Es funktioniert nur für eine Datei. Es verwendet ssh, um ein netcatListening am anderen Ende zu starten und es dann netcatan diesen Listening-Port zu senden. Ich habe pvzu Beginn hinzugefügt , um einen schönen Fortschrittsbalken zu geben. Ersetzen Sie pvdurch, catwenn Sie das nicht haben oder wollen. Ändern Sie den 2020-Port nach Ihren Wünschen. Dies setzt voraus, dass Sie über SSH-Zugriff auf das Remote-System verfügen.

Das ist völlig unsicher, aber genau das wollten Sie.

Ben Collins
quelle
9

Ich denke, NFS wird für diese Art von Aufgaben, bei denen Komfort, Geschwindigkeit und Sicherheit keine Rolle spielen, ziemlich unterschätzt. NFS ist wirklich einfach einzurichten, besonders auf dem Client: Sehen Sie sich diese kurze Anleitung für Ubuntu zusammen mit dieser längeren Hilfeseite für die Ubuntu-Community an . Aus der Sicht des Clients mounten Sie einfach das Serververzeichnis und es sieht aus wie ein lokales Laufwerk und Sie können cpoder rsyncoder beliebige Befehle verwenden, die Sie möchten.

TooTone
quelle
Wie sind Ihre Erfahrungen mit welcher Geschwindigkeit zu erwarten?
Thorbjørn Ravn Andersen
1
@ Thorbjørn Ravn Andersen für NFS mit Gigabit-Ethernet und PCIe3 x4-SSDs Ich fand, das Netzwerk war der Engpass. Bei Verwendung von QDR-Infiniband anstelle von Gigabit-Ethernet waren die SSDs der Engpass. Der NFS-Server des Linux-Kernels ist relativ wenig ausgelastet.
Eric M
4

Es gibt Patches für openssh für HPC (High Performance Computing), die den SSH-Durchsatz durch Erhöhen der Übertragungsfenstergröße und Deaktivieren der Verschlüsselung verbessern. Wenn Sie nichts dagegen haben, Patches neu zu kompilieren (und möglicherweise weiterzuleiten), überprüfen Sie HPN-SSH . Wie BowlOfRed im Kommentar bemerkt hat, müssten Sie die Patches für beide verwenden dem Client als auch auf dem Server verwenden.

Sie können rsync- auch auf einem Computer als Daemon und auf dem anderen als einfacher Client verwenden. Es ist besonders nützlich, um größere Volumes über eine Netzwerkverbindung zu synchronisieren, die langsamer ist als das Lesen (und Überprüfen) der Dateien, da nur die Teile von Dateien übertragen werden können, die sich zwischen Client und Server unterscheiden. Siehe rsync(1)und rsyncd.conf(5)Mann Seiten.

peterph
quelle
4
Dies wurde in Ihrer Antwort nicht explizit angegeben, aber diese Patches enthalten die Möglichkeit, die "Keine" -Verschlüsselung in SSH zu verwenden (mit anderen Worten, deaktivieren Sie die Verschlüsselung vollständig). Der Nachteil ist, dass Sie es auf beiden Seiten anwenden und ausführen müssen. Ein normaler Server akzeptiert die Verschlüsselung "Keine" nicht.
BowlOfRed
Sehr guter Punkt!
Peterph
4

Das obige Bash-Skript von Ben Collins ist eine gute Lösung, aber ihm fehlt das -pFlag für den Port auf der Serverseite. Wenn Sie das so ausführen, wie es ist, erhalten Sie nur eine leere Datei oder einen nicht reagierenden Server, der niemals etwas tut.

Es ist einfacher zu sehen, was dies tut, wenn Sie sich nur die Befehle ansehen.

DestinationShell# nc -l -p 2020 > file.txt

SourceShell# cat file.txt | nc dest.ip.address 2020

nc, oder netcat, ist genau wie cat, nur dass die Ausgabe über eine TCP-Verbindung in einen anderen Computer zurückgesendet wird. Sie übertragen nur die Ausgabe von nc auf dem Server in die Zieldatei. Sie können das Ziel auf die gleiche Weise einrichten echo foo | nc dest.ip.address 2020und alle möglichen anderen Dinge mit nc ausführen.

Preston Louis Ursini
quelle
2

seit dem letzten update ist einige zeit vergangen, einige chiffren haben sich geändert und zumindest auf freeBSD ist der blowfish nicht mehr verfügbar. Die schnellste Verschlüsselung, die ich bei aktuellen ssh-Installationen gefunden habe, ist -c aes128-cbc.

Genießen.

Elmars
quelle
0

Wenn Sie ganze Dateistrukturen übertragen möchten, verwenden Sie tar.

im empfangenden System:

[]# nc -l 2020 | tar xvf -

dann auf dem sendenden System:

[]# tar cvf - | nc dst.hostname.net 2020

Beobachten Sie das Archiv der Dateien auf einem System und extrahieren Sie auf dem anderen;)

user288759
quelle