garder la connexion ssh active et persistante lors de la commutation des connexions d'interface réseau


13

Scénario:

  1. À mon bureau avec un ordinateur portable branché sur Ethernet et connecté à un serveur distant via SSH
  2. Vous souhaitez passer d'un autre côté du bureau avec un ordinateur portable et passer au WiFi sans interrompre la connexion SSH

J'ai essayé: d'abord de me connecter au WiFi, puis de déconnecter Ethernet; et aussi déconnecter ethernet d'abord puis se connecter au WiFi. Aucune approche ne fonctionne. A également essayé lors de l'utilisation des serveurs Ubuntu et OS X ainsi que des deux options de système d'exploitation pour le client. Pas de chance.

Il semble que j'ai besoin d'un moyen de dire à ma connexion SSH qu'elle devrait commencer à utiliser l'interface réseau nouvellement connectée au lieu de l'ancienne interface déconnectée. Des idées?

Je me rends compte que je pourrais rester sur le WiFi toute la journée, mais je ne veux pas faire ça. Je me rends également compte que je peux simplement travailler à partir d'une session d'écran sur le serveur distant, puis me reconnecter à cette session d'écran après avoir changé d'interface, mais je ne veux pas non plus le faire. Par exemple, je pourrais être en train de diriger une grosse commande comme un vidage de base de données sur SSH ou je pourrais avoir des fichiers ouverts via SSHFS, ou je pourrais simplement éviter la nuisance de se reconnecter


3
Si vous obtenez la même adresse IP dans les deux sens, cela devrait fonctionner. Sinon, c'est à peu près impossible.
Alan Curry

@AlanCurry Si le client et le serveur prennent en charge MPTCP, c'est possible. Mais la prise en charge MPTCP est encore très limitée, il est donc peu probable que ce soit le cas.
kasperd

Réponses:


4

Je soupçonne que cette solution ne fonctionnera pas pour SSHFS, etc., mais vous pouvez jeter un œil à Mosh qui fournit un support d'itinérance pour au moins le shell lui-même.


Cela ressemble à une très bonne solution, mais malheureusement, elle doit également être installée sur le serveur, ce qui n'est pas toujours possible en raison des autorisations.
user000001

4

Je crains que vous ne puissiez pas faire cela, par définition. Une session SSH s'exécute sur une connexion TCP, qui est définie par le quadruple (adresse source, port source, adresse de destination, port de destination). Vous ne pouvez pas déplacer la connexion existante vers une adresse différente sur le client (à part le fait que le système d'exploitation va interrompre la connexion lorsque l'interface tombe en panne).

NAT peut compliquer cette image, mais en aucune manière qui vous aidera.


Oui, mais l'application peut se reconnecter une fois qu'elle sait que le socket s'est fermé. Le protocole SSH a-t-il une disposition pour reprendre une ancienne session?
Ajay Brahmakshatriya

@AjayBrahmakshatriya SSH n'a pas d'outils pour reprendre les sessions
Ferrybig

2

Vieux fil, je sais, mais par souci d'exhaustivité puisque je cherchais la même chose ...

Dans Windows 7 ou plus récent, vous devriez simplement être en mesure de sélectionner à la fois votre adaptateur wifi et votre adaptateur Ethernet et choisissez "Connexion Bridge". Cela vous donnera une seule adresse IP pour les deux, et vous pourrez désormais déconnecter et reconnecter Ethernet à volonté (avec une couverture wifi continue).


Bonne idée, je vais devoir essayer ça.
Doug

Si vous faites cela, ne pouvez pas
accéder

2

Je gère cela de deux manières:

Démarrez la session à partir d'un serveur Terminal Server dans votre centre de données (RDP / Windows / etc)

OU

Installez l' GNU ou et démarrez-les après la connexion.

Je préfère tmuxparce que screenc'est assez old school, mais si vous n'êtes autorisé qu'à installer des packages pris en charge, screenc'est dans le repo RHEL.

OU

Faire les deux.


tmuxest vraiment pratique. Exécuter des trucs distants à l'intérieur tmuxest une excellente habitude.
poussins

Oui je suis d'accord. La fonction de fenêtres multiples est excellente.
Doug

1

Cela ne peut pas se faire facilement.

Je peux vous indiquer un certain nombre d'applications très coûteuses qui vous permettent de conserver une session Telnet ou SSH lorsque vous vous déplacez entre IP ou AP, ou même pendant des périodes de déconnexion réseau prolongées, mais elles y parviennent essentiellement en créant un serveur toujours ouvert. -side session pour la machine cliente afin que le serveur ne sache pas que la connexion est différente ou abandonnée.

Je suppose que vous pourriez coder une telle chose, mais j'imagine que si c'était facile à faire, mes clients ne seraient pas violés avec des coûts à 5 chiffres pour garder leurs connexions terminales ouvertes sur les scanners portables sans fil.

Cependant, je suis tombé sur un écran, qui prétend créer des sessions SSH persistantes , ce qui peut réellement fonctionner ... essayez-le.


1

Le problème est probablement que votre adresse IP source change lorsque vous basculez entre câblé et wifi. Cela empêchera les sessions ssh de revenir.

J'ai géré cela sous linux en me connectant via un vpn et en m'assurant que la connexion vpn donne toujours la même ip à votre compte (pas difficile à appliquer, mais il y a de fortes chances que vous receviez la même ip sur vpn déjà par défaut de toute façon si c'est disponible, mais il vaut mieux l'appliquer pour être sûr). J'utilise principalement vtun, mais openvpn est ok aussi. Assurez-vous que vos connexions passent par le vpn (routage correct, préfixes poussés, ...)

J'ai pu être déconnecté du câble pendant 5 minutes, puis me connecter au wifi et pouvoir rester connecté à toutes mes sessions ssh. Ping continu, mtr, htop, ... continuez simplement lorsque le vpn est restauré comme si de rien n'était.


0

Essayez d'être uniquement sur wifi lorsque vous démarrez la session ssh pour la première fois. Ensuite, branchez votre Ethernet. Cela devrait permettre à de nouvelles connexions de passer par Ethernet, mais la connexion établie restera sur le wifi. Au moins, je l'ai vu fonctionner comme ça avec OSX, donc le système d'exploitation / matériel peut varier.


0

Je suis presque sûr que vous pouvez le faire avec une quantité stupide de piratage avec VM et Tunneling.

Ce n'est pas testé, mais faites-moi savoir si cela fonctionne vraiment.

  1. Créez une machine virtuelle invitée qui possède 2 interfaces, 1 adaptateur ponté (vers wifi) et 1 hôte uniquement en réseau
  2. Disons que la machine virtuelle a 192.168.0.25 pour l'adaptateur ponté pour la femme et 192.168.56.5 pour l'hôte uniquement.
  3. Dans le VM, créez la connexion SSH avec un tunnel vers le port du côté distant 22 ssh -L 10022:remote.server.example.com:22
  4. Connectez-vous maintenant à travers le tunnel. ssh 192.168.56.3 -p 10022
  5. Lorsque vous perdez votre connexion wifi, changez l'adaptateur de la machine virtuelle en adaptateur Ethernet net.
  6. Espérons que cela ne saute pas ou ne visse pas la table de routage

laisse moi savoir si ça fonctionne.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.