Utilisation -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
La combinaison ServerAliveInterval=15,ServerAliveCountMax=3
provoque les erreurs d'E / S à sortir après une minute de panne de réseau. Ceci est important mais en grande partie non documenté. Si l' ServerAliveInterval
option est laissée par défaut (donc sans la vérification vivante), les processus qui subissent un blocage d'E / S semblent s'endormir indéfiniment, même après que sshfs ait été reconnect
édité. Je considère cela comme un comportement inutile.
En d'autres termes, ce qui se passe -o reconnect
sans assigner ServerAliveInterval
est que n'importe quelle E / S réussira ou bloquera indéfiniment l'application si le SSH se reconnecte en dessous. En conséquence, une application typique devient entièrement bloquée. Si vous souhaitez autoriser les E / S à renvoyer une erreur et à reprendre l'application, vous avez besoin de ServerAliveInterval=1
ou d'une version supérieure.
Le ServerAliveCountMax=3
est le défaut quand même, mais j'aime bien le spécifier pour la lisibilité.
man 5 ssh_config
pour plus de détails, mais l'essentiel est que ssh envoie quelque chose comme un ping 'garder en vie' toutes les 15 secondes pour s'assurer que les ordinateurs répondent toujours l'un à l'autre. Si trois pings consécutifs échouent (45 secondes), reconnectez-vous.ServerAliveCountMax=3
a un sens différent. En cas d'échec, il essaiera de se reconnecter trois fois de plus, puis abandonnera. À un moment donné, les tentatives sont inutiles, mais cela dépend de l'application. Là encore, je pense que la page de manuel pourrait être plus spécifique, il y a différentes façons d’interpréter le libellé de l’OMI. FWIW mon problème spécifique a disparu après le passage à ProtonVPN. Je pense que cela vaut également la peine de vérifier la configuration SSH sur le client et le serveur, ils ont des options séparées, donc tout ce dont vous avez besoin est-o reconnect
Merci pour les conseils de autossh et autofs.
Cependant, pour mon objectif direct, j'ai trouvé une solution beaucoup plus simple qui n'a pas été documentée aussi bien:
la source
Autossh reconnecte automatiquement les sessions ssh lorsqu'il constate que ssh est mort ou a cessé de passer du trafic. Comme il ne s'agit que de ssh automatisé, il fonctionnera à partir d'adresses IP différentes et en suspension (même si l'ordinateur portable se réveille sur un réseau local différent).
la source
Une chose que vous pouvez faire est de monter vos systèmes de fichiers via autofs . Autofs est un outil qui montera un système de fichiers lorsque vous utiliserez quelque chose dans le répertoire sur lequel 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, est-il démonté?
Voici un howto que j'ai trouvé sur google pour y parvenir, là où plusieurs autres.
la source
Je soupçonne que non, car même si vous pouvez configurer votre client SSH pour ne pas interrompre la connexion, le serveur peut être configuré pour le faire après une période d'inactivité spécifiée, sans que vous puissiez le remplacer. Même si vous le pouviez, si vous ne repreniez jamais la connexion, le serveur resterait en suspens et, avec le temps, cela pourrait entraîner un gaspillage important de ressources du serveur.
Une meilleure technique, je pense, consiste à démonter le système de fichiers avant de suspendre votre ordinateur et à le remonter à son réveil. Le mécanisme pour ce faire peut dépendre de la manière dont vous suspendez votre ordinateur. J'utilise le noyau tuxonice et, pour ce faire, j'ai une directive comme
dans
/etc/hibernate/common.conf
.la source
La réponse de kubanczyk est excellente. J'ai eu un problème avec le gel de toute l'interface à cause de sshfs trop gourmands, maintenant pour une connexion facile démarrée par un script qui se reconnecte quand un ordinateur portable est ouvert et qui ne se bloque pas quand la connexion devient plus lente, vous pouvez utiliser un script bash pas très sécurisé, mais pratique pour de nombreux projets web par exemple):
la source