mantenere viva e persistente la connessione ssh mentre si cambiano le connessioni dell'interfaccia di rete


13

Scenario:

  1. Alla mia scrivania con il laptop collegato a Ethernet e collegato al server remoto tramite SSH
  2. Vuoi passare dall'altra parte dell'ufficio con il laptop e passare al WiFi senza interrompere la connessione SSH

Ho provato: collegandomi prima al WiFi, quindi scollegando Ethernet; e anche prima disconnettere ethernet e poi connettersi al WiFi. Nessuno dei due approcci funziona. Provato anche quando si utilizzano server Ubuntu e OS X insieme a entrambe le opzioni del sistema operativo e per il client. Senza fortuna.

Sembra che abbia bisogno di un modo per dire alla mia connessione SSH che dovrebbe iniziare a utilizzare l'interfaccia di rete appena connessa invece della vecchia interfaccia disconnessa. Qualche idea?

Mi rendo conto che potrei rimanere su WiFi tutto il giorno, ma non voglio farlo. Mi rendo anche conto che posso semplicemente lavorare all'interno di una sessione dello schermo sul server remoto e quindi riconnettermi a quella sessione dello schermo dopo aver cambiato le interfacce, ma non voglio farlo neanche. Ad esempio, potrei eseguire il piping di alcuni grandi comandi come un dump del database su SSH o potrei avere file aperti tramite SSHFS, o potrei semplicemente voler evitare il fastidio di riconnetterti


3
Se ottieni lo stesso indirizzo IP in entrambi i modi, questo dovrebbe funzionare. Altrimenti, è praticamente impossibile.
Alan Curry,

@AlanCurry Se sia il client che il server supportano MPTCP, è possibile. Ma il supporto MPTCP è ancora molto limitato, quindi è improbabile che sia così.
Kasperd,

Risposte:


4

Sospetto che questa soluzione non funzionerà per SSHFS, ecc., Ma potresti dare un'occhiata a Mosh che fornisce supporto al roaming almeno per la shell stessa.


Sembra un'ottima soluzione, ma sfortunatamente deve essere installata anche sul server, il che non è sempre possibile a causa delle autorizzazioni.
user000001,

4

Temo che tu non possa farlo, per definizione. Una sessione SSH viene eseguita su una connessione TCP, definita dalla quadrupla (indirizzo di origine, porta di origine, indirizzo di destinazione, porta di destinazione). Non è possibile spostare la connessione esistente su un indirizzo diverso sul client (a parte il fatto che il sistema operativo interromperà la connessione quando l'interfaccia si interrompe).

NAT può complicare questa immagine, ma non in alcun modo ti aiuterà.


Sì, ma l'applicazione può riconnettersi quando sa che il socket è stato chiuso. Il protocollo SSH ha una disposizione per riprendere una vecchia sessione?
Ajay Brahmakshatriya,

@AjayBrahmakshatriya SSH non ha strumenti per riprendere le sessioni
Ferrybig

2

Vecchio filo, lo so, ma per completezza poiché stavo cercando la stessa cosa ...

In Windows 7 o versioni successive dovresti semplicemente essere in grado di selezionare sia l'adattatore Wi-Fi che l'adattatore Ethernet e scegliere "Bridge Connection". Questo ti darà un unico indirizzo IP per entrambi e ora sarai in grado di disconnettere e riconnettere Ethernet a piacimento (data la copertura wifi continua).


Buona idea, dovrò provare questo.
Doug,

Se lo fai, non puoi accedere a entrambe le reti contemporaneamente, a seconda della configurazione, ti dà un calcio a tutti nell'area della rete (fonte: questo è successo a me)
Ferrybig

2

Lo gestisco in due modi:

Avvia la sessione da un server terminal nel tuo datacenter (RDP / Windows / ecc.)

O

Installa GNU o e dopo il login.

Preferisco tmuxperché screenè piuttosto vecchia scuola, ma se ti è permesso installare solo pacchetti supportati,screen è nel repository RHEL.

O

Fai entrambi.


tmuxè davvero utile. Eseguire roba remota all'interno di tmuxè un'abitudine eccellente per entrare.
pulcini

Si, sono d'accordo. La funzione di finestra multipla è eccezionale.
Doug,

1

Non può essere fatto facilmente.

Posso indicarti una serie di applicazioni molto costose che ti consentono di mantenere una sessione telnet o SSH quando ti sposti tra IP o AP, o anche per periodi di lunghi periodi di disconnessione della rete, ma sostanzialmente ottengono questo risultato creando un server sempre aperto -sessione laterale per il computer client in modo che il server non conosca la connessione diversa o interrotta.

Suppongo che potresti codificare una cosa del genere, ma immagino che se fosse facile farlo, i miei clienti non verrebbero violentati con costi a 5 cifre per mantenere aperte le connessioni dei terminali su scanner portatili wireless.

Tuttavia, sono inciampato sullo schermo, il che afferma di creare sessioni SSH persistenti , che potrebbero effettivamente funzionare ... provarci.


1

Il problema è probabilmente che l'indirizzo IP di origine cambia quando si passa da cablato a wifi. Ciò impedirà il ritorno delle sessioni ssh.

Ho gestito questo in Linux collegandomi su un VPN e assicurandomi che la connessione VPN fornisca sempre lo stesso IP al tuo account (non è difficile da applicare, ma è probabile che tu riceva lo stesso IP su VPN già di default comunque se è disponibile, ma meglio applicarlo per sicurezza). Uso principalmente vtun, ma anche openvpn è ok. Assicurati che le tue connessioni passino attraverso la VPN (instradamento corretto, prefissi push, ...)

Sono stato in grado di rimanere offline dal cavo anche per 5 minuti, quindi connettermi al wifi e rimanere comunque connesso a tutte le mie sessioni SSH. Ping, mtr, htop in corso, ... continua solo quando la VPN viene ripristinata come se non fosse successo nulla.


0

Prova ad essere solo su wifi quando avvii per la prima volta la sessione ssh. Quindi collega la tua Ethernet. Ciò dovrebbe consentire alle nuove connessioni di passare attraverso la Ethernet, ma la connessione stabilita rimarrà sul wifi. Almeno l'ho visto funzionare così con OSX, quindi OS / hardware possono variare.


0

Sono abbastanza sicuro che puoi farlo con una quantità stupida di hacking con VM e tunneling.

Questo non è testato, ma fammi sapere se funziona davvero.

  1. Creare una macchina virtuale guest con 2 interfacce, 1 adattatore con bridge (al wifi) e 1 solo host di rete
  2. Supponiamo che la VM abbia 192.168.0.25 per l'adattatore bridge per la moglie e 192.168.56.5 solo per l'host.
  3. All'interno della VM creare la connessione SSH con un tunnel alla porta 22 del lato remoto ssh -L 10022:remote.server.example.com:22
  4. Ora connettiti attraverso il tunnel. ssh 192.168.56.3 -p 10022
  5. Quando si perde la connessione Wi-Fi, sostituire l'adattatore sulla macchina virtuale con l'adattatore di rete etere.
  6. Spero che non rovini o rovini la tabella di routing

fammi sapere se funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.