J'ai une connexion réseau non fiable entre deux machines: parfois les connexions TCP actives sont interrompues pour des raisons indépendantes de ma volonté. Je veux établir une connexion TCP fiable entre les deux machines.
Si le réseau était fiable, je courrais simplement ssh -L 1234:localhost:1234 remotehost
, avec le serveur écoutant sur le port 1234 remotehost
, et pointerais le client localhost:1234
. Mais si la connexion ssh meurt, la connexion transférée le sera également. Comment organiser la restauration automatique de la connexion entre le client et le serveur?
Non-solutions:
- Ce n'est pas pour les applications interactives, donc l' écran ne s'applique pas.
- Il ne s'agit pas seulement de reconnecter automatiquement un tunnel SSH, la autossh . Je veux continuer à utiliser la même connexion TCP tunnelée, pas en démarrer une nouvelle.
- En principe, un VPN ferait l'affaire. Mais il semble exagéré quand je veux juste une connexion TCP, et j'aimerais une solution qui fonctionne même si je n'ai pas d'autorisations root de chaque côté.
J'ai une faible mémoire d'un programme appelé rocks
qui a fait exactement cela, mais il semble être tombé du visage du Web. Je suis principalement intéressé par Linux des deux côtés (même si je m'attendrais à ce qu'un programme à ce niveau soit portable pour d'autres unités), mais si vous connaissez un programme qui fonctionne entre QNX et VMS, tant mieux.
scp
. Je répondais w / ssh keepalives basé sur votre exemple de transfert de port. Re: saut en aval instable, il n'y a pas grand-chose que vous puissiez faire, à part créer une session ssh avec des keepalives plus tolérantes (c'est-à-dire permettre plus de keepalives abandonnées avec ServerAliveInterval > 0
et ServerAliveCountMax > 3
). NAT nécessite des intervalles de conservation inférieurs. La question clé est d'identifier quel est le problème et de l'adapter en conséquence. Mettez les options .ssh/config
pour qu'elles soient toujours là pour vous
rocks
implémentation ... bien que ce soit évidemment un vrai coup de foudre