100 votes

Montage SSHFS qui survit à la déconnexion

J'utilise SSHFS des montages de mon ordinateur portable vers un serveur central.

De toute évidence, le montage SSHFS est interrompu après une longue déconnexion (par exemple, pendant une suspension), car la connexion SSH sous-jacente a expiré.

Existe-t-il un moyen de faire survivre les montages SSHFS à des déconnexions de longue durée (> 5 min) ou même à une reconnexion avec une IP différente ?

123voto

kubanczyk Points 13302

Utilisez -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

La combinaison ServerAliveInterval=15,ServerAliveCountMax=3 fait apparaître les erreurs d'E/S après une minute d'interruption du réseau. Ceci est important mais largement non documenté. Si ServerAliveInterval est laissée à sa valeur par défaut (donc sans la vérification de la vie), les processus qui subissent un blocage des E/S semblent dormir indéfiniment, même après que le sshfs obtienne reconnect 'ed. Je considère que c'est un comportement inutile.

En d'autres termes, ce qui se passe sur -o reconnect sans attribuer ServerAliveInterval est que toute entrée/sortie va soit réussir, soit bloquer l'application indéfiniment si le ssh se reconnecte en dessous. Une application typique devient entièrement suspendue en conséquence. Si vous souhaitez permettre aux E/S de retourner une erreur et reprendre l'application, vous avez besoin de ServerAliveInterval=1 ou plus.

El ServerAliveCountMax=3 est de toute façon la valeur par défaut, mais j'aime le spécifier pour des raisons de lisibilité.

61voto

bene Points 2144

Merci pour les conseils de autossh et autofs.

Cependant, pour mon objectif direct, j'ai trouvé une solution beaucoup plus simple qui n'était pas aussi bien documentée :

sshfs -o reconnect server:/path/to/mount

12voto

Mahmoud Hossam Points 331

Autossh reconnecte automatiquement les sessions ssh lorsqu'il constate que ssh est mort ou a cessé de transmettre du trafic. Puisqu'il s'agit simplement d'un ssh automatisé, il fonctionnera à partir de différentes IP et de la suspension (même si l'ordinateur portable se réveille sur un autre réseau).

9voto

jammus Points 1796

Une chose que vous pourriez faire est de monter vos systèmes de fichiers via autofs . Autofs est un outil qui monte un système de fichiers lorsque vous utilisez quelque chose dans le répertoire où le système de fichiers sera monté. Lorsqu'il détecte une activité, le système de fichiers est monté. Lorsque rien ne se passe sur le système de fichiers, il est démonté.

Voici un comment faire J'ai trouvé sur google pour accomplir ceci, il y avait plusieurs autres.

2voto

mcqwerty Points 2106

Je soupçonne que ce n'est pas le cas, car même si vous pouvez configurer votre client SSH pour qu'il ne coupe pas la connexion, le serveur peut être configuré pour le faire après une période d'inactivité donnée, et vous ne pouvez pas passer outre. Même si vous le pouviez, si vous ne reprenez jamais la connexion, le serveur serait laissé en suspens, ce qui, à terme, pourrait entraîner un gaspillage important des ressources du serveur.

Une meilleure technique, je pense, est de démonter le système de fichiers avant de suspendre votre ordinateur et de le remonter lorsque l'ordinateur se réveille à nouveau. Le mécanisme pour le faire peut dépendre de la manière exacte dont vous suspendez votre ordinateur - j'utilise le noyau tuxonice et pour faire quelque chose comme ça, j'ai une directive du genre

Unmount /mnt/sshfs

sur /etc/hibernate/common.conf .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X