Копировать файлы без шифрования (ssh) в локальную сеть

22

scpработает хорошо во всех случаях, но Raspberry Pi слишком слаб для эффективного копирования файлов в безопасной среде (LAN). Теоретически возможная скорость 6,75 МБ / с по беспроводной сети 54 Мбит / с уменьшается до 1,1 МБ / с.

Есть ли способ копировать файлы удаленно без шифрования?

Это должна быть команда cli без каких-либо зависимостей от дополнительных сервисов (ftp, samba) или, по крайней мере, с минимальной конфигурацией. Я имею в виду стандартный инструмент, который довольно хорошо работает из стандартных стандартных программ / служб (например, scp / ssh).

ManuelSchneid3r
источник
2
«без каких-либо зависимостей» практически невозможно. вам всегда будет нужна программа, которая «слушает» одну сторону (например, сервер ssh / sftp при использовании scp)
'12
2
Что насчет netcat ?
Егорич
Хорошо, ты прав. Я изменю требования
ManuelSchneid3r
@ umläute, если Клиент не может подключиться к серверу через ssh / rsh и обмениваться данными через stdin / out. В старые времена передача tar в удаленно вызываемый tar была способом простого копирования деревьев каталогов с одного компьютера на другой.
Турбьерн Равн Андерсен

Ответы:

14

Возможно, вы ищете rcp, он выполняет удаленное выполнение через, rshтак что вам придется полагаться на это и иметь в виду, что все общение небезопасно.

YoMismo
источник
12

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

doneal24
источник
1
Это хорошая идея. Возможно ли это для конкретной конфигурации хоста? (.ssh / config)
ManuelSchneid3r
3
@ ManuelSchneid3r: Да: в Hostразделе вашего ssh_config используйте Ciphers arcfour,blowfish-cbcдля зеркального отображения вышеуказанного -cпереключателя. Однако, если ваши процессоры поддерживают набор инструкций AES-NI, я бы попытался переключиться на aes128-gcm@openssh.com(да, это имя шифра, включая @материал), который будет использовать невероятно быстрый (с AES-NI) AES128-GCM.
Рейд
Я бы на самом деле не назвал blowfish слабым шифром, и в общем случае (т.е. не 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или любые команды , которые вы хотите.

TooTone
источник
Какой у вас опыт с какой скоростью ожидать?
Турбьёрн Равн Андерсен
1
@ Thorbjørn Ravn Andersen для NFS с гигабитным Ethernet и твердотельными накопителями PCIe3 x4 Я обнаружил, что сеть является узким местом. Используя QDR Infiniband вместо гигабитного Ethernet, узкие места были SSD. NFS-сервер ядра Linux имеет довольно низкие издержки.
Эрик М
4

Есть патчи для openssh для HPC (High Performance Computing), которые улучшают пропускную способность ssh за счет увеличения размеров окна передачи и отключения шифрования - если вы не возражаете против перекомпиляции (и, возможно, патчей для прямой портирования), проверьте HPN-SSH . Как заметил в комментарии BowlOfRed, вам нужно будет использовать патчи как на клиенте, так и на клиенте. на сервере.

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

peterph
источник
4
Это не было явно указано в вашем ответе, но эти исправления включают возможность использовать шифр «none» в SSH (другими словами, полностью отключить шифрование). Недостатком является то, что вы должны применить и запустить его на обоих концах. Обычный сервер не примет шифр «нет».
BowlOfRed
Очень хороший момент!
Петер
4

Приведенный выше сценарий bash от Ben Collins является хорошим решением, но ему не хватает -pфлага для порта на стороне сервера. Запуск этого как есть просто даст вам пустой файл или зависший сервер, который никогда ничего не делает.

Легче увидеть, что это делает, если вы просто посмотрите на команды.

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

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

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

Престон Луи Урсини
источник
2

с момента последнего обновления прошло некоторое время, некоторые шифры изменились, и, по крайней мере, во FreeBSD, blowfish больше не доступен. Самый быстрый шифр, который я нашел в текущих установках ssh - это -c aes128-cbc.

Наслаждаться.

Elmars
источник
0

Если вы хотите передать целые файловые структуры, используйте tar.

в приемной системе:

[]# nc -l 2020 | tar xvf -

затем в отправляющей системе:

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

Посмотрите архив файлов на одной системе и распакуйте на другой;)

user288759
источник