Monter un répertoir ssh sans coupure

20/07/2010

Je travaille souvent sur mon serveur (Linux évidemment) et j’ai tendance à vouloir transférer des fichiers ou en récupérer… Vous allez me dire “ouais, scp en ligne de commande ou encore sftp:// dans le navigateur de fichier nautilus… mais il existe une meilleure méthode pour avoir accès à son serveur: faire un point de montage fuse.

Avant d’attaquer, il faut savoir qu’un souci peut apparaître avec SSH si la connexion est inactive. En fait, quelque soit la manière dont vous vous connectez à votre serveur, si la connexion est inactive durant quelques minutes vous allez avoir une coupure. Cela implique: -terminal coincé ou message d’erreur -montage gvfs gnome coincé (donc nautilus dans les choux) -montage fuse coincé (et pareil, nautilus ou accès qui coince)

La solution au problème se trouve soit dans le fichier de configuration du serveur, soit dans celui du client.

Dans le premier cas, ouvrez le fichier /etc/ssh/sshd_config (sur le serveur) et trouvez ou ajouter la ligne qui contient: ClientAliveInterval. Si elle commence par un dièse (#) vous enlevez ce fameux dièse et changez la valeur numérique à 30 ou 45.

Cela va faire en sorte que le serveur envoit un paquet vide au client si ce dernier a été inactif durant plus de 30 ou 45 secondes.

  • - Vous devez redémarrer le serveur ssh** pour qu’il prennent en compte cette modification, faites simplement depuis le client:
ssh root@votre-serveur /etc/init.d/sshd restart

Attendez un moment, disons 5-6 secondes et relancez vos sessions ssh. C’est ok.

Si vous préférez toucher le fichier client, c’est facile. Ouvrez (sur votre poste ce coup ci) le fichier /etc/ssh/ssh_config (remarquez qu’il n’y a plus le “d” après ssh). Trouvez maintenant la ligne qui contient ServerAliveInterval. Si elle n’y est pas, ajoutez la. Comme précédemment le client va tenter d’envoyer un paquet vide toutes les N secondes. Exemple:

Host *
  #blablabla plein de config
  ServerAliveInterval 30

Désormais, il ne vous reste plus qu’à redémarrer votre session ssh (pour prendre les nouveaux paramètres) et vous n’aurez plus de soucis de déconnexion de serveur.

Si vous le désirez, avant de monter notre disque fuse, nous allons créer des clefs pour ne plus avoir à utiliser notre mot de passe. Si vous avez un fichier ~/.ssh/id_rsa.pub alors passez au paragraphe suivant, sinon:

ssh-keygen -t rsa -b 1024

Si vous le désirez, ne tapez pas de mot de passe (passphrase)… ok c’est moins “secure” mais faut pas non plus croire que ça ouvre des portes… bref, je ne m’étale pas sur le sujet, sachez que ça ne risque pas tant que ça…

Envoyons maintenant notre clef sur le serveur:

ssh-copy-id user-server@votre-serveur

On va vous demander le mot de passe du serveur pour “user-server” (ça peut être “root”)… puis c’est terminé ! Maintenant, si vous tentez cette commande:

ssh user-server@votre-server uname -a

cela va vous sortir des infos du serveur sans vous demander de mot de passe.

Passons maintenant au montage de disque fuse SSH.

En premier, installez “fuse” sur votre machine…

#fedora
su -lc "yum -y install fuse fuse-sshfs"

#ubuntu
sudo aptitude install fuse sshfs

Voilà qui est fait. On va maintenant imaginez cette situation: -vous avez un serveur “votre-server” dont un répertoire /home/server-user existe

Voici ce qu’il faut faire: -créer sur votre poste un répertoire -monter le répertoire du serveur sur le répertoire créé

Facile!

mkdir ~/rep-de-mon-user
sshfs server-user@votre-server:/home/server-user ~/rep-de-mon-user

Et c’est tout ! Le point de montage se fait ! la preuve:

mount
server-user@votre-server:/home/votre-server on /home/<votreuser>/rep-de-mon-user type fuse.sshfs (rw,nosuid,nodev,max_read=65536,user=<votre-user>)

Génial non ? Et si on le mettait maintenant dans notre fstab pour le monter tout le temps au démarrage de la machine ?

Allez, en root (ou avec sudo sur ubuntu) (**remplacez par votre login local**)

echo "server-user@votre-server:/home/votre-server     /home/<votre-user>/rep-de-mon-user fuse.sshfs rw,nosuid,nodev,max_read=65536,user=<votre-user> 0 0" >> /etc/fstab 

Maintenant, rien de plus simple… au démarrage le point de montage se fera, sinon vous pouvez monter le répertoire de cette manière:

mount /home/<votre-user>/rep-de-mon-user

et le démonter:

umount /home/<votre-user>/rep-de-mon-user

C’est franchement sympa je trouve… non ?

Ça peut vous intéresser aussi


Monter un partage webdav sharepoint sur Linux

Quand on m’a posé cette question, au boulot, chez un ...


Optimisons un peu notre Linux en limitant les accès disques

Que vous ayez un SSD ou non, je pense que ...


OpenOffice en mode serveur

Il est parfois compliqué de créer des documents dignes de ...


Tunnel SSH local et renverse

J’ai déjà traité ce sujet il y a quelques ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.