Blog Marcel

( Free software adventures )

Zssh : un air de SCP dans SSH

Rédigé par PPmarcel - 31 mai 2011 - 8 commentaires

Actuellement lorsque vous naviguez en SSH sur une machine distante et que vous voulez transferer des fichiers avec votre ordinateur, la solution la plus simple consiste a ouvrir un autre shell, et utiliser la commande scp. Cette tâche peut se révèler pénible dans la mesure où devez bien souvent utiliser votre souris pour copier l'emplacement source/destination dans le shell SSH pour l'indiquer dans la commande scp, puis vous re-authentifier.

Pourtant depuis 11 ans il existe une solution qui permet d'effectuer les transferts de fichiers directement depuis une session SSH.

Zssh

S'appuyant sur l'oublié protocole Zmodem, zssh est un petit wrapper qui vient s'interfacer avec ssh. Ainsi pour chaque nouvelle session SSH ouverte, zssh créé un deuxième tty/pty qui servira à transférer des fichiers.
Pendant la navigation avec SSH, un petit raccourci clavier va nous permettre de basculer sur un shell situé sur votre machine locale, qui va nous permettre de transférer des données.

Où le trouver?

Comme le projet a été débuté en 2000, il va sans dire que zssh est présent dans la grande majorité des distributions Linux. Au besoin, les sources peuvent être retrouvées par ici.

Du côté machine distante, il va falloir installer un outil qui va comprendre le protocole zmodem et qui nous permettra de manipuler nos fichiers. Cet outil est lui aussi ancien et se nomme lrzsz. Au besoin, ses sources peuvent être trouvée par là.

Donc, pour la machine locale, il nous faut :
zssh
Et sur la machine distante :
lrzsz OU zssh

Comment utiliser zssh?

Envoyer des fichiers : du poste local au poste distant

Connectez-vous au poste client :
zssh login@hôte.distant
De là, basculez sur le terminal zssh, qui s'avère vous positionner sur votre machine :
CRTL+espace
Maintenant, envoyez votre fichier :
sz fichier
Et le fichier arrivera dans le répertoire distant d'où vous avez basculé zssh.

Recevoir des fichiers : du poste distant au poste local

Supposons que vous êtes maintenant sur l'hôte distant, connecté avec zssh. Pour envoyer un fichier, tapez la commande suivante dans le prompt :
sz fichier
Basculez sur le terminal zssh :
CRTL+espace
Puis, positionnez-vous dans le dossier de destination, puis téléchargez le fichier :
rz

Le mot de la fin

Zssh est une petite application utile qui peut rendre bien des services. de par sa conception en wrapper, tous les arguments de "ssh" sont utilisables. Non seulement il est simple d'utilisation, mais il permet de faciliter la traversé de plusieurs serveurs SSH intermédiaires.

Toutefois, sachez que si il peut transférer des fichiers, il n'est pas capable de manipuler des répertoires (tar est votre ami ;-) )

Liens utiles

8 commentaires

#1 mercredi 01 juin 2011 @ 14:55 gardouille a dit :

A ouaaii, pas mal du tout =)

Sinon, je ne sais pas avec bash, mais avec mon zsh et ma config ssh, si j'ouvre une connection ssh sur un hôte d'un côté. Sur un second terminal, je peux faire un scp vers ce même hôte et j'ai l'auto-complétion pour parcourir les répertoires de l'hôte distant.

En tout cas, merci pour l'astuce et pour ton blog que je viens de découvrir, je vais aller fouiner un peu =).

#2 mercredi 01 juin 2011 @ 15:12 PPmarcel a dit :

Mais si tu passes par 3 machines intermédiaires en SSH avant d'arriver sur le bon hôte distant, comment est-ce que tu peux transférer tes fichiers ?

Il n'y a pas plus tard qu'une semaine, c'est ce que je devais faire au bouleau, et là j'ai compris un gain de temps.

Bon après ce n'est pas toujours très rapide, mais ça dépanne sur les petites fichiers

#3 mercredi 01 juin 2011 @ 16:32 tony a dit :

Préfère filezilla pour faire du scp ;)

#4 jeudi 02 juin 2011 @ 16:04 PPmarcel a dit :

Personnellement j'ai commencé à utiliser rsync pour remplacer scp au niveau des transferts. Je trouve qu'il apporte beaucoup plus de possibilités.

Par contre, en ce qui concerne zssh ce n'est pas comparable, car le mode d'utilisation est complètement de scp, rsync ou encore filezilla.

#5 mardi 07 juin 2011 @ 14:35 DeepDelver a dit :

petit truc en plus ;)
il faut que ZSSH soit sur les deux machines, sinon ça va crier lors d'un transfert :p
(sorry, si c'est déjà écrit dans le billet ... j'ai lu le principal :D :p)

#6 jeudi 09 juin 2011 @ 00:59 PPmarcel a dit :

Merci de la remarque, je l'ai remis en valeur dans le billet (ce n'était pas très clair dans mes explications, je l'avoue).

En fait soit tu installes zssh de l'autre côté, soit tu installes "lrzsz" qui permet d'utiliser le protocole z-modem et d'utiliser les commandes "rz"et "sz" sur le côté distant.

#7 mardi 03 juillet 2012 @ 10:39 agence web a dit :

Assez intéressant comme article, mais si il date de 2011.

#8 vendredi 13 juillet 2012 @ 13:35 PPmarcel a dit :

agence web : L'article date de 2011, certes, mais l'application n'a pas évoluée depuis 2003 non plus. Alors les manipulations restent d'activité. ;)

Écrire un commentaire

Quelle est la première lettre du mot mfutk ? :