Skopiuj pliki bez szyfrowania (ssh) w sieci lokalnej


22

scpdziała dobrze we wszystkich przypadkach, ale Raspberry Pi jest zbyt słaby, aby efektywnie kopiować pliki w bezpiecznym środowisku (lan). Teoretycznie możliwe 6,75 MB / s za pośrednictwem bezprzewodowej sieci LAN 54 Mbit zmniejsza się do około 1,1 MB / s.

Czy istnieje sposób na zdalne kopiowanie plików bez szyfrowania?

Powinno to być polecenie cli bez zależności od dodatkowych usług (ftp, samba) lub przynajmniej przy minimalnej konfiguracji. Mam na myśli standardowe narzędzie, które działa całkiem dobrze po wyjęciu z pudełka ze standardowymi programami / usługami (np. Scp / ssh).


2
„bez żadnych zależności” jest praktycznie niemożliwe. zawsze będziesz potrzebować programu, który „nasłuchuje” z jednej strony (np. serwera ssh / sftp podczas korzystania scp)
umläute

2
Co z netcat ?
yegorich

OK, masz rację.
Zmienię

@ umläute, chyba że klient może ssh / rsh do serwera i komunikować się przez stdin / out. W dawnych czasach przesyłanie tar do zdalnie wywoływanej tar było sposobem łatwego kopiowania drzew katalogów z jednej maszyny na drugą.
Thorbjørn Ravn Andersen

Odpowiedzi:


14

Być może szukasz rcp, wykonuje on zdalne wykonywanie za pośrednictwem, rshwięc będziesz musiał na tym polegać i pamiętać, że cała komunikacja jest niepewna.


12

Nie można całkowicie wyłączyć szyfrowania w ssh / scp, ale można zmusić go do użycia słabszego szyfru, który wymaga znacznie mniejszej mocy obliczeniowej. Upewnij się, że kompresja nie jest włączona w twoim ssh_config lub w linii poleceń i dodaj -c arcfour,blowfish-cbcdo linii poleceń scp, aby wybrać słabsze szyfry.


1
To niezły pomysł. Czy jest to możliwe w przypadku konfiguracji specyficznej dla hosta? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: Tak: pod Hostsekcją w ssh_config, użyj, Ciphers arcfour,blowfish-cbcaby wykonać kopię lustrzaną powyższego -cprzełącznika. Jeśli jednak Twoje procesory obsługują zestaw instrukcji AES-NI, spróbuję przełączyć się na aes128-gcm@openssh.com(tak, to jest nazwa szyfru, w tym @rzeczy), która użyje niesamowicie szybkiego (z AES-NI) AES128-GCM.
Reid

Naprawdę nie nazwałbym blowfish słabym szyfrem iw ogólnym przypadku (tj. Nie R-Pi) AE mogą być wzmocnione przez przyspieszenie hw.
peterph

9

Napisałem ten krótki skrypt:

#!/bin/bash

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

Potrzeba dwóch argumentów, hosta do wysłania i pliku, który wysyłasz. Działa tylko z jednym plikiem. Używa ssh, aby rozpocząć netcatnasłuch na drugim końcu, a następnie netcatwysyła go do tego portu nasłuchiwania. Dodałem pvna początku, aby dać fajny pasek postępu. Wymień pvsię catjeśli nie masz lub chciał. Zmień port 2020 na cokolwiek chcesz. Wymaga to dostępu ssh do zdalnego systemu.

To jest całkowicie niepewne, ale wtedy tego właśnie chciałeś.


9

Myślę, że NFS jest dość niedoceniany dla tego rodzaju zadań, w których chcesz wygody, szybkości i nie dbasz o bezpieczeństwo. NFS jest naprawdę prosty do skonfigurowania, szczególnie na kliencie: zapoznaj się z tym krótkim przewodnikiem po ubuntu , wraz z dłuższą stroną pomocy społeczności ubuntu . Z punktu widzenia klienta po prostu zamontować katalogu serwera i wygląda tak jak na dysku lokalnym i można użyć cplub rsyncczy cokolwiek chcesz poleceń.


Jakie są twoje doświadczenia z jakiego rodzaju prędkości się spodziewać?
Thorbjørn Ravn Andersen

1
@ Thorbjørn Ravn Andersen dla NFS przy użyciu gigabitowego Ethernetu i dysków SSD PCIe3 x4 Stwierdziłem, że sieć stanowi wąskie gardło. Używając QDR Infiniband zamiast Gigabit Ethernet, dyski SSD były wąskim gardłem. Serwer NFS jądra Linuksa ma dość niski narzut.
Eric M

4

Istnieją poprawki dla openssh dla HPC (High Performance Computing), które poprawiają przepustowość ssh poprzez zwiększenie rozmiarów okien transferu i wyłączenie szyfrowania - jeśli nie masz nic przeciwko ponownej kompilacji (i prawdopodobnie łatom przesyłania dalej), sprawdź HPN-SSH . Jak zauważył BowlOfRed w komentarzu, należy użyć poprawek zarówno na kliencie, jak i na serwerze.

Możesz także użyć rsync- na jednym komputerze jako demona i jako prostego klienta na drugim. Jest to szczególnie przydatne do synchronizacji większych woluminów przez łącze sieciowe, które jest wolniejsze niż odczytywanie (i sprawdzanie) plików, ponieważ jest w stanie przesyłać tylko te części plików, które różnią się między klientem a serwerem. Zobacz rsync(1)i rsyncd.conf(5)strony man dla szczegółów.


4
Nie było to wyraźne w twojej odpowiedzi, ale te łaty obejmują możliwość użycia szyfru „none” w SSH (innymi słowy, wyłącz szyfrowanie całkowicie). Wadą jest to, że musisz go zastosować i uruchomić na obu końcach. Normalny serwer nie akceptuje szyfru „brak”.
BowlOfRed

Bardzo dobry punkt!
peterph

4

Powyższy skrypt basha autorstwa Bena Collinsa jest dobrym rozwiązaniem, ale brakuje mu -p flagi portu po stronie serwera. Uruchamianie go w takim stanie zapewni tylko pusty plik lub zawieszony serwer, który nigdy nic nie robi.

Łatwiej jest zobaczyć, co to robi, jeśli spojrzysz na polecenia.

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

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

nclub netcat, podobnie jak cat, z wyjątkiem tego, że dane wyjściowe są przesyłane echem do innej maszyny za pośrednictwem połączenia TCP. Po prostu wypychasz wyjście nc na serwerze do pliku docelowego. Możesz ustawić Miejsce docelowe w ten sam sposób i robić echo foo | nc dest.ip.address 2020i robić różne rzeczy za pomocą nc.


2

minęło trochę czasu od ostatniej aktualizacji, niektóre szyfry uległy zmianie, a przynajmniej na FreeBSD, blowfish nie jest już dostępny. Najszybszy szyfr, jaki znalazłem w obecnych instalacjach ssh to -c aes128-cbc.

Cieszyć się.


0

Jeśli chcesz przenieść całe struktury plików, użyj tar.

w systemie odbiorczym:

[]# nc -l 2020 | tar xvf -

następnie w systemie wysyłającym:

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

Obejrzyj archiwum plików w jednym systemie i wypakuj w drugim;)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.