зберігайте ssh-з'єднання живими та стійкими під час перемикання підключень мережевого інтерфейсу


13

Сценарій:

  1. На моєму столі з ноутбуком, підключеним до Ethernet і підключеним до віддаленого сервера через SSH
  2. Хочете перейти на іншу сторону офісу з ноутбуком та перейти на WiFi, не перериваючи з'єднання SSH

Я спробував: спочатку підключитися до WiFi, а потім відключити Ethernet; а також відключити спочатку мережу Ethernet, а потім підключитися до WiFi. Жоден підхід не працює. Також спробували використовувати сервери Ubuntu та OS X разом з обома параметрами ОС, а також для клієнта. Не вдалося.

Здається, мені потрібен певний спосіб сказати моєму SSH-з'єднанню, що він повинен почати використовувати щойно підключений мережевий інтерфейс замість старого відключеного інтерфейсу. Будь-які ідеї?

Я розумію, що я можу просто залишитися на WiFi цілий день, але не хочу цього робити. Я також усвідомлюю, що я можу просто працювати в межах сеансу екрана на віддаленому сервері, а потім знову підключитися до цього екранного сеансу після зміни інтерфейсів, але я також не хочу цього робити. Наприклад, я можу створювати якусь велику команду, як, наприклад, скидання бази даних через SSH або у мене можуть бути відкриті файли через SSHFS, або я просто хочу уникнути неприємностей повторного підключення


3
Якщо ви отримуєте однакову IP-адресу обома способами, тоді це повинно просто працювати. Якщо ні, то це майже неможливо.
Алан Карі

@AlanCurry Якщо і клієнт, і сервер підтримують MPTCP, то це можливо. Але підтримка MPTCP все ще дуже обмежена, тому навряд чи це буде так.
kasperd

Відповіді:


4

Я підозрюю, що це рішення не працюватиме для SSHFS тощо, але ви можете поглянути на Mosh, який забезпечує підтримку роумінгу щонайменше для самої оболонки.


Це виглядає як дуже хороше рішення, але, на жаль, його потрібно встановити і на сервері, що не завжди можливо через дозволи.
user000001

4

Боюся, ви не можете цього зробити за визначенням. Сеанс SSH працює через TCP-з'єднання, яке визначається чотирма каналами (адреса джерела, вихідний порт, адреса призначення, порт призначення). Ви не можете перенести існуюче з'єднання на іншу адресу клієнта (окрім того, що ОС порушить з'єднання, коли інтерфейс вийде з ладу).

NAT може ускладнити цю картину, але ні в якому разі не допоможе вам.


Так, але програма може знову підключитися, коли дізнається, що сокет закрився. Чи має протокол SSH для відновлення старої сесії?
Аджай Брахмакшатрія

@AjayBrahmakshatriya SSH не має інструментів для відновлення сесій
Ferrybig

2

Я знаю стару нитку, але заради повноти, оскільки я шукав те саме ...

У Windows 7 або новіших версіях ви повинні просто мати змогу вибрати як адаптер для Wi-Fi, так і адаптер Ethernet і вибрати "Bridge Connection". Це дасть вам єдину IP-адресу для обох, і ви тепер зможете відключити та підключити Ethernet за бажанням (за умови безперервного покриття Wi-Fi).


Гарна ідея, мені доведеться спробувати це.
Даг

Якщо це зробити, не можна відразу обом мережам, залежно від налаштування, він б'є всіх у зону мережі (джерело: це трапилось зі мною)
Ferrybig

2

Я керую цим двома способами:

Почніть сеанс з термінального сервера у вашому центрі обробки даних (RDP / Windows / тощо)

АБО

Встановіть GNU або та запустіть їх після входу.

Я вважаю за краще, tmuxтому що screenце досить стара школа, але якщо вам дозволяється встановлювати лише підтримувані пакети, screenперебувайте в репо RHEL.

АБО

Зробіть і те, і інше.


tmuxдуже зручно. Запуск віддалених речей всередині tmux- чудова звичка потрапляти.
пташенята

Так, я згоден. Функція декількох вікон чудова.
Дуг

1

Це неможливо зробити легко.

Я можу вказати на ряд дуже дорогих додатків, які дозволяють вам тримати сеанс telnet або SSH при переміщенні між IP-адресами або AP-адресами або навіть на періоди відключення мережі тривалих періодів, але вони в основному досягають цього, створюючи постійно відкритий сервер сеанс-бік для клієнтської машини, щоб сервер не знав, що з'єднання відрізняється або перервано.

Я гадаю, ви могли б зашифрувати таку річ, але я думаю, що якби це було легко зробити, мої клієнти не були б зґвалтовані з 5-ти цифровими витратами на збереження їхніх термінальних з'єднань відкритими бездротовими портативними сканерами.

Хоча я натрапив на екран, який стверджує, що створює стійкі сеанси SSH , які можуть насправді спрацювати ...


1

Можливо, проблема полягає в тому, що ваша IP-адреса джерела змінюється при переключенні між кабельним і Wi-Fi. Це запобіжить поверненню сеансів ssh.

Я вирішив це в Linux, підключившись до vpn і переконавшись, що з'єднання vpn завжди дає той самий ip для вашого облікового запису (не важко застосувати, але великий шанс, що ви отримаєте той самий ip над vpn вже за замовчуванням, все одно, якщо це доступно, але краще застосувати це, щоб бути впевненим). Я в основному використовую vtun, але openvpn теж нормально. Переконайтеся, що ваші з'єднання переходять через vpn (правильна маршрутизація, висунуті префікси, ...)

Я міг бути в автономному режимі від кабелю навіть протягом 5 хвилин, а потім підключитися до wifi і все ще можу залишатися на зв’язку з усіма моїми сеансами ssh. Продовжуючи ping, mtr, htop, ... просто продовжуйте, коли vpn відновлюється так, ніби нічого не сталося.


0

Спробуйте бути лише на Wi-Fi під час першого запуску сеансу ssh. Потім підключіть вашу Ethernet. Це повинно дозволяти новим з'єднанням переходити по ethernet, але встановлене з'єднання залишатиметься на wifi. Принаймні, я бачив, як це працює з OSX, тому ОС / обладнання може відрізнятися.


0

Я майже впевнений, що ви можете це зробити за допомогою нерозумної кількості злому ж / VM та тунелювання.

Це не перевірено, але дайте мені знати, чи справді це працює.

  1. Створіть гостьовий VM, який має 2 інтерфейси, 1 мостовий адаптер (для wifi) та 1 мережеве мережу
  2. Скажімо, VM має 192.168.0.25 для мостового адаптера для дружини та 192.168.56.5 лише для хоста.
  3. Усередині vm створіть ssh-з'єднання з тунелем до віддаленого порту 22 ssh -L 10022:remote.server.example.com:22
  4. Тепер підключіться через тунель. ssh 192.168.56.3 -p 10022
  5. Коли ви втратите з’єднання Wi-Fi, замініть адаптер VM на адаптер ефірної мережі.
  6. Будемо сподіватися, що це не хуп, ні викрут таблиці

дайте мені знати, якщо це працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.