SCP (SSH) : booster la vitesse de transfert

qos 26 juin 2016

SCP = Secure Copy (copier/coller sécurisé via SSH) => SSH => chiffré => vitesse réduite.

J’utilise peu souvent SCP à la main (plutôt scripté) => j’oublie la syntaxe => ça m’énerve => je pose ça là (puis j’explique, comme d’hab).

 

Pour la liste des commandes etc je vous laisse lire le man, vous avez en-dessous un exemple de copie local => distant, via port SSH par défaut. Le truc, pour accélérer le transfert, c’est d’une part d’agir sur le taux de compression des données mais aussi sur le chiffrement utilisé, certains étant plus rapides que d’autres. Puis de tweaker un peu SSH.

 

Pour la compression le choix va de “rien” à 9. Niveau chiffrement le choix est large (pour SSH bien entendu vu que nous parlons de SCP) et les articles/tests sur le Net vont bon train, il ressort souvent que arcfour est l’un des plus rapides. Arcfour étant en fin de compte RC4, dans sa version leakée (non officielle) il y a quelques années (puisque RC4 devait rester secret).

On peut également jouer sur la qualité de transmission des informations via SSH : IPQoS (IP Quality of Service – qualité des échanges IP). Le but étant ici de spécifier le paramètre throughput afin de privilégier la bande passante à la latence pour chaque échange. La QoS est gérée de manière transparente mais on peut parfois forcer tel ou tel paramètre selon les besoins. Ce que nous faisons ici.

Par exemple :

 – Pour de l’échange BitTorrent on va préférer throughput, comme ici, pour transférer un max de données le plus vite possible,

 – Dans le cas d’une connexion SSH pour faire des opération en lignes de commandes, on va alors préférer latency, pour avoir le temps de réponse le plus court. 

 

 

Copier le dossier local MACHIN dans le dossier CHOSE sur le serveur TRUC, port SSH par défaut (22)

scp -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour -v -r MACHIN user@TRUC:/chemin/vers/CHOSE/

scp : lancement du programme

-C : activer la compression. Ce paramètre peut se suffir à lui-même, mais je veux ensuite forcer la compression maximale

-o : spécifier une option SSH (donc marche pour SCP et rSync aussi par exemple)

CompressionLevel 9 : ici l’option de compression maximale (9)

IPQoS throughput : préférer la bande passante lors des échanges

-c : définir le type de chiffrement

arcfour : type de chiffrement voulu

-v : verbose (montrer les messages lors du transfert), utile en cas de plantage pour voir d’où ça vient

-r : agir sur un dossier et non un fichier (dans ce cas ne rien mettre)

MACHIN : dossier local à traiter (ici, à envoyer sur la machine distante)

user@TRUC: : machine distante, si le port SSH est autre chose que le port par défaut -22-, ajouter -P PORT avant

/chemin/vers/CHOSE/ : emplacement sur la machine distante où copier le dossier local MACHIN

 

Pour utiliser un ou des ciphers précis via SSH, il faut éditer sa configuration et ajouter à la fin Ciphers AAA,BBB,CCC,…

sudo nano /etc/ssh/sshd_config

Exemple

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22

...


# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],[email protected],blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc

 

 

Ça ne rend pas SCP (ou rSync, tout ce qui passe par SSH en gros) aussi rapide que l’éclair mais ça aide bien :)

 

Mots clés