3 votes

Tunnel SSH inversé en échec - à la recherche de conseils de débogage

J'ai un serveur Mac OS X (appelé le serveur interne) derrière un pare-feu qui effectue _un renvoi de port inverse via ssh -gnN -R *:remoteport:localhost:localport root@remote.server où remote.server est le domaine/IP d'un serveur public, que j'appellerai le serveur distant. Ensuite, je peux me connecter au serveur interne en me connectant à remote.server:remoteport._

_

Périodiquement, le tunnel échouera et pour remédier à cela, j'ai un script sur le serveur interne qui tente de se reconnecter au serveur distant jusqu'à ce qu'il réussisse. Cela a fonctionné à plusieurs reprises.

Mais récemment, j'ai rencontré une erreur dans laquelle le serveur interne perd sa connexion au serveur distant, et rien de ce que je fais sur le serveur interne ne peut rétablir la connexion. Le serveur distant doit être redémarré, après quoi le tunnel est immédiatement rétabli par le script.

Le serveur distant est un VPS exécutant une installation de base de CentOS 6. Aucune configuration n'a été modifiée au cours des derniers mois. Le serveur distant a exécuté le tunnel sans erreurs pendant plus de 4 mois, puis a échoué deux fois au cours des 12 dernières heures de cette manière, nécessitant deux redémarrages à quelques heures d'intervalle seulement.

Quels types de choses pourraient causer ce comportement, et où devrais-je commencer à chercher des problèmes?

_

2voto

Il est plus que probable que la connexion client ait été perdue, mais que le serveur distant n'ait pas encore fermé la connexion. Cela entraîne un conflit de port car l'ancienne session continuera d'écouter sur le port auquel vous essayez de vous connecter.

Connectez-vous au serveur distant, identifiez le processus sshd obsolète, et envoyez-lui un signal HUP (kill -HUP) pour terminer la session et son auditeur associé.

Cela dit, vous ne devriez vraiment pas vous appuyer sur ce type de tunnel "persistant" dans un environnement de production. (surtout si vous l'utilisez pour contourner une politique de pare-feu qui est en place pour une raison)

0 votes

Cela a du sens. Y a-t-il un moyen de faire en sorte que le serveur distant ferme automatiquement la connexion lorsqu'elle est perdue ?

0 votes

Aussi, ce n'est pas vraiment un environnement de "production", c'est pour un usage personnel. Le problème est que le VPN fourni sur place n'est pas compatible avec les appareils mobiles et c'est donc la seule façon de le faire fonctionner. (On m'a donné le feu vert pour utiliser également le tunnel inversé).

1 votes

Le côté distant finira éventuellement par mettre fin à la connexion lorsqu'il remarquera que la connexion est obsolète, mais cela peut prendre beaucoup de temps en fonction de la nature de la connexion interrompue. Votre meilleure option est de consulter man sshd_config et de définir ClientAliveInterval sur une valeur non nulle sur le serveur distant.

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