Copie archivos sin cifrado (ssh) en la red local

22

scpfunciona bien en todos los casos, pero Raspberry Pi es demasiado débil para copiar archivos de manera eficiente en un entorno seguro (lan). Los 6,75 MB / s teóricamente posibles a través de LAN inalámbrica de 54 Mbit se reducen a aproximadamente 1.1 MB / s.

¿Hay alguna manera de copiar archivos de forma remota sin cifrado?

Debe ser un comando cli sin dependencias de servicios adicionales (ftp, samba) o al menos con un mínimo de configuración. Quiero decir, una herramienta estándar que funciona bastante bien con programas / servicios estándar (como scp / ssh).

ManuelSchneid3r
fuente
2
"sin dependencias" es prácticamente imposible. siempre necesitará un programa que "escuche" en un lado (como el servidor ssh / sftp cuando se usa scp)
umläute
2
¿Qué hay de netcat ?
yegorich
Ok tienes razon.
Cambiaré
@ umläute a menos que el Cliente pueda enviar ssh / rsh al servidor y comunicarse a través de stdin / out. En los viejos tiempos, canalizar el alquitrán a un alquitrán invocado de forma remota era la forma de copiar fácilmente los árboles de directorio de una máquina a otra.
Thorbjørn Ravn Andersen

Respuestas:

14

Es posible que esté buscando rcp, realiza una ejecución remota a través de rshlo que tendrá que confiar en eso y tener en cuenta que todas las comunicaciones son inseguras.

YoMismo
fuente
12

No puede deshabilitar el cifrado por completo en ssh / scp, pero puede obligarlo a utilizar un cifrado más débil que sea mucho menos intensivo en CPU. Asegúrese de que la compresión no esté activada en su ssh_config o en la línea de comando y agregue -c arcfour,blowfish-cbca su línea de comando scp para seleccionar cifrados más débiles.

doneal24
fuente
1
Esta es una buena idea. ¿Es esto posible para la configuración específica del host? (.ssh / config)
ManuelSchneid3r
3
@ ManuelSchneid3r: Sí: debajo de una Hostsección en su ssh_config, use Ciphers arcfour,blowfish-cbcpara reflejar el -cinterruptor anterior . Sin embargo, si sus CPU admiten el conjunto de instrucciones AES-NI, trataría de cambiar a [email protected](sí, ese es el nombre del cifrado, incluido el @material), que utilizará el increíblemente rápido (con AES-NI) AES128-GCM.
Reid
Realmente no llamaría al pez globo un cifrado débil y, en general, los EA podrían aumentar debido a la aceleración hw.
Peter
9

Escribí este guión rápido:

#!/bin/bash

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

Se necesitan dos argumentos, el host para enviarlo y el archivo que está enviando. Solo funciona para un archivo. Utiliza ssh para comenzar a netcatescuchar en el extremo opuesto y luego lo netcatenvía a ese puerto de escucha. Agregué pval inicio para dar una buena barra de progreso. Reemplace pvcon catsi no tiene o quiere eso. Cambia el puerto 2020 a lo que quieras. Esto requiere que tenga acceso ssh al sistema remoto.

Esto es completamente inseguro, pero eso es lo que querías.

Ben Collins
fuente
9

Creo que NFS está bastante subestimado para este tipo de tarea, donde desea conveniencia, velocidad y no le importa la seguridad. NFS es realmente simple de configurar, especialmente en el cliente: consulte esta breve guía para ubuntu , junto con esta página de ayuda de la comunidad ubuntu más larga . Desde la perspectiva del cliente, simplemente monta el directorio del servidor y se ve como una unidad local y puede usar cpo los rsynccomandos que desee.

TooTone
fuente
¿Cuáles son sus experiencias con qué tipos de velocidad esperar?
Thorbjørn Ravn Andersen
1
@ Thorbjørn Ravn Andersen para NFS usando Gigabit Ethernet y SSD PCIe3 x4 Descubrí que la red era el cuello de botella. Usando QDR Infiniband en lugar de Gigabit Ethernet, las SSD fueron el cuello de botella. El servidor NFS del kernel de Linux tiene una sobrecarga bastante baja.
Eric M
4

Hay parches para openssh para HPC (High Performance Computing) que mejoran el rendimiento de ssh al aumentar los tamaños de las ventanas de transferencia y deshabilitar el cifrado; si no le importa volver a compilar (y probablemente portar parches hacia adelante), verifique HPN-SSH . Como BowlOfRed notó en el comentario, necesitaría usar los parches tanto en el cliente como en el servidor.

También puede usarlo rsyncen una máquina como demonio y como cliente simple en la otra. Es particularmente útil para sincronizar volúmenes más grandes a través del enlace de red que es más lento que leer (y sumar) los archivos, ya que puede transferir solo aquellas partes de archivos que difieren entre el cliente y el servidor. Ver rsync(1)y rsyncd.conf(5)páginas de manual para más detalles.

Peterph
fuente
44
Esto no fue explícito en su respuesta, pero estos parches incluyen la capacidad de usar el cifrado "none" en SSH (en otras palabras, deshabilitar completamente el cifrado). El inconveniente es que debes aplicarlo y ejecutarlo en ambos extremos. Un servidor normal no aceptará el cifrado "ninguno".
BowlOfRed
Muy buen punto!
Peter
4

El script bash anterior de Ben Collins es una buena solución, pero le falta la -pbandera del puerto en el lado del servidor. Ejecutar eso tal cual le daría un archivo vacío o un servidor bloqueado que nunca hace nada.

Es más fácil ver qué está haciendo esto si solo observa los comandos.

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

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

nc, o netcat, es como cat excepto que la salida se repite en otra máquina a través de una conexión TCP. Simplemente está empujando la salida de nc en el servidor al archivo de destino. Puede configurar el Destino de la misma manera y hacer echo foo | nc dest.ip.address 2020y hacer todo tipo de otras cosas con nc.

Preston Louis Ursini
fuente
2

Ha pasado algún tiempo desde la última actualización, algunos cifrados han cambiado, y al menos en freeBSD, el pez globo ya no está disponible. El cifrado más rápido que encontré con las instalaciones ssh actuales es -c aes128-cbc.

Disfrutar.

Elmars
fuente
0

Si desea transferir estructuras de archivos enteras, use tar.

en el sistema receptor:

[]# nc -l 2020 | tar xvf -

luego en el sistema de envío:

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

Mire el archivo de archivos en un sistema y extraiga en el otro;)

usuario288759
fuente