Copiez des fichiers sans chiffrement (ssh) dans le réseau local


22

scpfonctionne bien dans tous les cas, mais le Raspberry Pi est trop faible pour copier efficacement des fichiers dans un environnement sécurisé (lan). Les 6,75 Mo / s théoriquement possibles via le réseau sans fil 54 Mbit se réduisent à environ 1,1 Mo / s.

Existe-t-il un moyen de copier des fichiers à distance sans chiffrement?

Il doit s'agir d'une commande cli sans dépendance à des services supplémentaires (ftp, samba) ou au moins avec un minimum de configuration. Je veux dire, un outil standard qui fonctionne assez bien prêt à l'emploi avec des programmes / services standard (comme scp / ssh).


2
"sans aucune dépendance" n'est pratiquement pas possible. vous aurez toujours besoin d'un programme qui "écoute" d'un côté (comme le serveur ssh / sftp lors de l'utilisation scp)
umläute

2
Et Netcat ?
yegorich

D'accord, tu as raison. Je changerai les exigences
ManuelSchneid3r

@ umläute, sauf si le client peut ssh / rsh vers le serveur et communiquer via stdin / out. Autrefois, le piping de tar vers un tar appelé à distance était le moyen de copier facilement les arborescences de répertoires d'une machine à une autre.
Thorbjørn Ravn Andersen

Réponses:


14

Vous cherchez peut-être rcp, il exécute une exécution à distance via rsh, vous devrez donc vous fier à cela et garder à l'esprit que toutes les communications ne sont pas sécurisées.


12

Vous ne pouvez pas désactiver complètement le cryptage sur ssh / scp, mais vous pouvez le forcer à utiliser un chiffrement plus faible qui nécessite beaucoup moins de CPU. Assurez-vous que la compression n'est pas activée dans votre ssh_config ou sur la ligne de commande et ajoutez-la -c arcfour,blowfish-cbcà votre ligne de commande scp pour sélectionner des chiffrements plus faibles.


1
C'est une bonne idée. Est-ce possible pour une configuration spécifique à l'hôte? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: Oui: dans une Hostsection de votre ssh_config, utilisez Ciphers arcfour,blowfish-cbcpour mettre en miroir le -ccommutateur ci-dessus . Cependant, si vos processeurs prennent en charge le jeu d'instructions AES-NI, j'essaierais de passer à aes128-gcm@openssh.com(oui, c'est le nom du chiffrement, y compris les @trucs), qui utilisera le AES128-GCM extrêmement rapide (avec AES-NI) AES128-GCM.
Reid

Je ne dirais pas vraiment que Blowfish est un chiffrement faible et que dans le cas général (c'est-à-dire pas R-Pi), les AE pourraient être boostés par l'accélération matérielle.
peterph

9

J'ai écrit ce petit script:

#!/bin/bash

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

Il faut deux arguments, l'hôte pour l'envoyer et le fichier que vous envoyez. Cela ne fonctionne que pour un seul fichier. Il utilise ssh pour démarrer une netcatécoute à l'extrémité opposée, puis utilise netcatpour l'envoyer à ce port d'écoute. J'ai ajouté pvau début pour donner une belle barre de progression. Remplacez-le pvpar catsi vous n'en avez pas ou ne le souhaitez pas. Changez le port 2020 en ce que vous voulez. Cela nécessite que vous ayez un accès ssh au système distant.

C'est complètement incertain, mais c'est ce que vous vouliez.


9

Je pense que NFS est assez sous-estimé pour ce genre de tâche, où vous voulez la commodité, la vitesse et ne vous souciez pas de la sécurité. NFS est vraiment simple à configurer, en particulier sur le client: consultez ce petit guide pour ubuntu , ainsi que cette page d'aide de la communauté ubuntu plus longue . Du point de vue du client, vous montez simplement le répertoire du serveur et il ressemble à un lecteur local et vous pouvez utiliser cpou rsyncou les commandes de votre choix.


Quelles sont vos expériences avec quels types de vitesse attendre?
Thorbjørn Ravn Andersen

1
@ Thorbjørn Ravn Andersen pour NFS utilisant Gigabit Ethernet et SSD PCIe3 x4 J'ai trouvé que le réseau était le goulot d'étranglement. En utilisant QDR Infiniband au lieu de Gigabit Ethernet, les SSD étaient le goulot d'étranglement. Le serveur NFS du noyau Linux est assez faible.
Eric M

4

Il existe des correctifs pour openssh pour HPC (High Performance Computing) qui améliorent le débit ssh en augmentant la taille des fenêtres de transfert et en désactivant le chiffrement - si cela ne vous dérange pas de recompiler (et probablement de transférer les correctifs de portage), vérifiez HPN-SSH . Comme BowlOfRed remarqué dans le commentaire, vous aurez besoin d'utiliser les patches sur les deux le client et le serveur.

Vous pouvez également utiliser rsync- sur une machine en tant que démon et en tant que client simple sur l'autre. Il est particulièrement utile pour synchroniser des volumes plus importants sur une liaison réseau plus lente que la lecture (et la somme de contrôle) des fichiers, car il est capable de transférer uniquement les parties de fichiers qui diffèrent entre le client et le serveur. Voir les pages de manuel rsync(1)et rsyncd.conf(5)pour plus de détails.


4
Ce n'était pas explicite dans votre réponse, mais ces correctifs incluent la possibilité d'utiliser le chiffrement "aucun" dans SSH (en d'autres termes, désactiver complètement le chiffrement). L'inconvénient est que vous devez l'appliquer et l'exécuter aux deux extrémités. Un serveur normal n'acceptera pas le chiffrement "aucun".
BowlOfRed

Très bon point!
peterph

4

Le script bash ci-dessus de Ben Collins est une bonne solution, mais il manque le -pdrapeau du port côté serveur. L'exécuter tel quel ne vous donnerait qu'un fichier vide ou un serveur bloqué qui ne fait jamais rien.

Il est plus facile de voir ce que cela fait si vous regardez simplement les commandes.

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

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

nc, ou netcat, est comme cat sauf que la sortie est répercutée sur une autre machine via une connexion TCP. Vous poussez simplement la sortie de nc sur le serveur dans le fichier de destination. Vous pouvez configurer la destination de la même manière et ne echo foo | nc dest.ip.address 2020et faire toutes sortes d'autres choses avec nc.


2

cela fait un certain temps depuis la dernière mise à jour, certains chiffres ont changé, et au moins sur freeBSD, le blowfish n'est plus disponible. Le chiffre le plus rapide que j'ai trouvé avec les installations ssh actuelles est -c aes128-cbc.

Prendre plaisir.


0

Si vous souhaitez transférer des structures de fichiers entières, utilisez tar.

dans le système récepteur:

[]# nc -l 2020 | tar xvf -

puis sur le système d'envoi:

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

Regardez l'archive des fichiers sur un système et extrayez sur l'autre;)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.