Скопіюйте файли без шифрування (ssh) у локальну мережу


22

scpдобре працює у всіх випадках, але Raspberry Pi є слабким для ефективного копіювання файлів у захищеному середовищі (lan). Теоретично можливі 6,75 Мб / с через 54 Мбіт бездротовий ланцюг скорочуються до приблизно 1,1 Мб / с.

Чи є можливість копіювати файли віддалено без шифрування?

Це має бути команда cli без залежностей від додаткових сервісів (ftp, samba) або принаймні з мінімумом конфігурації. Я маю на увазі стандартний інструмент, який працює непогано із стандартними програмами / послугами (наприклад, scp / ssh).


2
"без будь-яких залежностей" практично неможливо. вам завжди знадобиться програма, яка "слухає" з одного боку (як-от сервер ssh / sftp при використанні scp)
umläute

2
А що з мережею ?
Єгорич

Гаразд ти маєш рацію. Я
змінитиму

@ umläute, якщо Клієнт не може ssh / rsh на сервері та спілкуватися через stdin / out. У старі часи переведення дьогтю на віддалений виклик дьогтю було способом легко копіювати дерева каталогів з однієї машини на іншу.
Thorbjørn Ravn Andersen

Відповіді:


14

Ви можете шукати rcp, він виконує віддалене виконання через, rshтому вам доведеться покладатися на це і мати на увазі, що все спілкування є незахищеним.


12

Ви не можете повністю відключити шифрування на ssh / scp, але ви можете змусити його використовувати слабший шифр, який значно менший процесор. Переконайтесь, що стимуляція не включена у вашому ssh_config або в командному рядку та додайте -c arcfour,blowfish-cbcдо командного рядка scp, щоб вибрати слабші шифри.


1
Це гарна ідея. Чи можливо це для конфігурації хоста? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: Так: під Hostрозділом у своєму ssh_config використовуйте Ciphers arcfour,blowfish-cbcдля дзеркального відображення -cперемикач. Однак якщо ваші процесори підтримують набір інструкцій AES-NI, я б спробував переключитися на aes128-gcm@openssh.com(так, це ім'я шифру, включаючи @матеріал), який використовуватиме надзвичайно швидко (з AES-NI) AES128-GCM.
Рейд

Я б насправді не називав міхур слабким шифром у загальному випадку (тобто не R-Pi) AE можуть бути посилені прискоренням hw.
петерф

9

Я написав цей швидкий сценарій:

#!/bin/bash

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

Потрібно два аргументи, хост для надсилання і файл, який ви надсилаєте. Він працює лише для одного файлу. Він використовує ssh для початку netcatпрослуховування на протилежному кінці, а потім використовує netcatдля надсилання його до цього порту прослуховування. Я додав pvдо початку, щоб дати приємну планку прогресу. Замінити pvз , catякщо ви не маєте або хочете. Змініть порт 2020 на все, що завгодно. Для цього потрібно мати доступ до ssh до віддаленої системи.

Це абсолютно невпевнено, але тоді, саме цього ви хотіли.


9

Я думаю, що NFS досить недооцінений для такого роду завдань, де ви хочете зручності, швидкості та не піклуєтесь про безпеку. NFS дуже просто налаштувати, особливо на клієнті: див. Це коротке керівництво по ubuntu разом із цією довшою довідковою сторінкою спільноти ubuntu . З точки зору клієнта ви просто змонтувати каталог сервера , і це виглядає так само , як локальний диск , і ви можете використовувати cpабо rsyncчи будь-які команди , які ви хочете.


Який ваш досвід щодо того, яких швидкостей очікувати?
Thorbjørn Ravn Andersen

1
@ Thorbjørn Ravn Andersen для NFS, використовуючи гігабітні Ethernet та PCIe3 x4 SSD, я виявив, що мережа була вузьким місцем. Використовуючи QDR Infiniband замість гігабітного Ethernet, жорсткими дисками стали жорсткі диски. Сервер ядра NFS ядра Linux досить низький.
Ерік М

4

Існують патчі opensh для HPC (High Performance Computing), які покращують пропускну здатність ssh за рахунок збільшення розмірів вікна передачі та відключення шифрування - якщо ви не проти перекомпілювати (і, можливо, виправляти вперед патчі), перевірте HPN-SSH . Як BowlOfRed помітив у коментарі, вам потрібно буде використовувати патчі як на клієнті, так і на сервері.

Ви також можете використовувати rsync- на одній машині як демон, і як простий клієнт на іншій. Це особливо корисно для синхронізації більших томів через мережеве посилання, яке відбувається повільніше, ніж читання (і контрольна сума) файлів, оскільки воно здатне передавати саме ті частини файлів, які відрізняються між клієнтом і сервером. Дивіться rsync(1)і rsyncd.conf(5)сторінка людини для деталей.


4
Це не було явним у вашій відповіді, але ці виправлення включають можливість використання шифру "none" в SSH (іншими словами, повністю відключити шифрування). Недолік полягає в тому, що вам потрібно застосувати і запустити його на обох кінцях. Звичайний сервер не прийме шифр "жоден".
BowlOfRed

Дуже хороший момент!
петерф

4

Вищеописаний сценарій bash Бена Коллінза є хорошим рішенням, але у нього відсутній -pпрапор для порту на стороні сервера. Виконання цього, що є, просто дасть вам порожній файл або вивішений сервер, який ніколи нічого не робить.

Простіше зрозуміти, що це робить, якщо просто подивитися на команди.

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

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

ncабо netcat - це як кішка, за винятком того, що висновок відлунюється в іншій машині через TCP-з'єднання. Ви просто штовхаєте вихід nc на сервері у файл призначення. Ви можете встановити пункт призначення так само, як echo foo | nc dest.ip.address 2020і робити всі інші речі за допомогою nc.


2

минуло певний час з моменту останнього оновлення, деякі шифри змінилися, і, принаймні, на freeBSD, сліп більше не доступний. Найшвидший шифр, який я знайшов у поточних установках ssh - -c aes128-cbc.

Насолоджуйтесь.


0

Якщо ви хочете передати цілі файлові структури, використовуйте tar.

в системі прийому:

[]# nc -l 2020 | tar xvf -

потім у системі відправки:

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

Перегляньте архів файлів в одній системі та витягніть в іншій;)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.