Copia i file senza crittografia (ssh) nella rete locale


22

scpfunziona bene in tutti i casi, ma Raspberry Pi è troppo debole per copiare i file in modo efficiente in un ambiente sicuro (lan). Teoricamente possibile 6,75 MB / s tramite lan wireless a 54 Mbit si riducono a circa 1,1 MB / s.

C'è un modo per copiare i file in remoto senza crittografia?

Dovrebbe essere un comando cli senza dipendenze da servizi extra (ftp, samba) o almeno con un minimo di configurazione. Voglio dire, uno strumento standard che funziona abbastanza bene out-of-the-box con programmi / servizi standard (come scp / ssh).


2
"senza dipendenze" non è praticamente possibile. avrai sempre bisogno di un programma che "ascolti" da un lato (come il server ssh / sftp quando lo usi scp)
umläute,

2
Che mi dici di netcat ?
yegorich,

Ok hai ragione.
Cambierò

@ umläute a meno che il Cliente non possa inviare ssh / rsh al server e comunicare tramite stdin / out. Ai vecchi tempi il piping di tar su un tar richiamato da remoto era il modo di copiare facilmente gli alberi delle directory da una macchina all'altra.
Thorbjørn Ravn Andersen,

Risposte:


14

Potresti cercare rcp, esegue l'esecuzione remota tramite, rshquindi dovrai fare affidamento su questo e tenere presente che tutte le comunicazioni sono insicure.


12

Non è possibile disabilitare completamente la crittografia su ssh / scp, ma è possibile forzarla a utilizzare un codice più debole che richiede molta meno CPU. Assicurati che la compressione non sia attivata in ssh_config o nella riga di comando e aggiungi -c arcfour,blowfish-cbcalla tua riga di comando scp per selezionare cifre più deboli.


1
Questa è una bella idea È possibile per la configurazione specifica dell'host? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: Sì: sotto una Hostsezione di ssh_config, utilizzare Ciphers arcfour,blowfish-cbcper eseguire il mirroring -cdell'interruttore sopra . Tuttavia, se le tue CPU supportano il set di istruzioni AES-NI, proverei a passare a aes128-gcm@openssh.com(sì, questo è il nome della cifra, comprese le @cose), che utilizzerà AES128-GCM incredibilmente veloce (con AES-NI).
Reid

In realtà non definirei blowfish una cifra debole e, in generale, (cioè non R-Pi), gli eventi avversi potrebbero essere potenziati dall'accelerazione hw.
peterph,

9

Ho scritto questo breve script:

#!/bin/bash

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

Ci vogliono due argomenti, l'host a cui inviarlo e il file che si sta inviando. Funziona solo per un file. Usa ssh per iniziare un netcatascolto dall'estremità opposta e poi lo usa netcatper inviarlo a quella porta di ascolto. Ho aggiunto pvall'inizio per dare una bella barra di avanzamento. Sostituisci pvcon catse non lo hai o non lo desideri. Cambia la porta 2020 in qualunque cosa ti piaccia. Ciò richiede di avere accesso ssh al sistema remoto.

Questo è completamente insicuro, ma poi è quello che volevi.


9

Penso che NFS sia abbastanza sottovalutato per questo tipo di attività, in cui desideri praticità, velocità e non ti preoccupi della sicurezza. NFS è davvero semplice da configurare, soprattutto sul client: consulta questa breve guida per Ubuntu , insieme a questa pagina di aiuto della comunità Ubuntu più lunga . Dal punto di vista del cliente è sufficiente montare la directory del server e sembra proprio come un disco locale ed è possibile utilizzare cpo rsynco quello comandi che si desidera.


Quali sono le tue esperienze con quali tipi di velocità aspettarti?
Thorbjørn Ravn Andersen,

1
@ Thorbjørn Ravn Andersen per NFS usando Gigabit Ethernet e SSD PCIe3 x4 Ho scoperto che la rete era il collo di bottiglia. Utilizzando QDR Infiniband invece di Gigabit Ethernet gli SSD erano il collo di bottiglia. Il server NFS del kernel di Linux ha un sovraccarico abbastanza basso.
Eric M,

4

Esistono patch per openssh per HPC (High Performance Computing) che migliorano il throughput di ssh aumentando le dimensioni della finestra di trasferimento e disabilitando la crittografia - se non ti dispiace ricompilare (e probabilmente patch di port forwarding), controlla HPN-SSH . Come notato da BowlOfRed nel commento, avresti bisogno di usare le patch sia sul client che sul server.

Puoi anche usare rsync- su una macchina come demone e come semplice client sull'altra. È particolarmente utile per la sincronizzazione di volumi maggiori su un collegamento di rete più lento della lettura (e del checksum) dei file, poiché è in grado di trasferire solo quelle parti di file che differiscono tra client e server. Vedi rsync(1)e rsyncd.conf(5)pagine man per i dettagli.


4
Questo non era esplicito nella tua risposta, ma queste patch includono la possibilità di usare la cifra "nessuna" in SSH (in altre parole, disabilitare completamente la crittografia). Lo svantaggio è che devi applicarlo ed eseguirlo su entrambe le estremità. Un server normale non accetta la cifra "nessuna".
BowlOfRed

Ottimo punto!
peterph,

4

Lo script bash sopra di Ben Collins è una buona soluzione, ma manca il -pflag per la porta sul lato server. Eseguirlo così com'è ti darebbe solo un file vuoto o un server sospeso che non fa mai nulla.

È più facile vedere cosa sta facendo se guardi solo i comandi.

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

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

nc, o netcat, è proprio come cat tranne per l'output che viene ripetuto in un'altra macchina attraverso una connessione TCP. Stai solo spingendo l'output di nc sul server nel file di destinazione. Puoi impostare la Destinazione allo stesso modo e fare echo foo | nc dest.ip.address 2020e fare qualsiasi altra cosa con nc.


2

è passato del tempo dall'ultimo aggiornamento, alcuni numeri sono cambiati e, almeno su freeBSD, il pesce palla non è più disponibile. La cifra più veloce che ho trovato con le attuali installazioni ssh è -c aes128-cbc.

Godere.


0

Se si desidera trasferire intere strutture di file, utilizzare tar.

nel sistema ricevente:

[]# nc -l 2020 | tar xvf -

quindi sul sistema di invio:

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

Guarda l'archivio dei file su un sistema ed estrailo sull'altro;)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.