Назад | Перейти на главную страницу

поддерживать соединение ssh живым и постоянным при переключении соединений сетевого интерфейса

Сценарий:

  1. На моем столе с ноутбуком, подключенным к сети Ethernet и подключенным к удаленному серверу через SSH
  2. Хотите переехать в другой конец офиса с ноутбуком и перейти на WiFi, не прерывая SSH-соединение

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

Похоже, мне нужен способ сообщить моему SSH-соединению, что оно должно начать использовать только что подключенный сетевой интерфейс вместо старого отключенного интерфейса. Любые идеи?

Я понимаю, что могу просто оставаться на Wi-Fi целый день, но я не хочу этого делать. Я также понимаю, что могу просто работать из сеанса экрана на удаленном сервере, а затем повторно подключиться к этому сеансу экрана после изменения интерфейсов, но я тоже не хочу этого делать. Например, я мог бы передать какую-то большую команду, такую ​​как дамп базы данных по SSH, или у меня могут быть файлы, открытые через SSHFS, или я мог бы просто избежать неудобств повторного подключения

Я подозреваю, что это решение не будет работать для SSHFS и т. Д., Но вы можете взглянуть на Mosh который обеспечивает поддержку роуминга, по крайней мере, для самой оболочки.

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

NAT может усложнить эту картину, но никак не поможет.

Я справляюсь с этим двумя способами:

Запустите сеанс с терминального сервера в вашем центре обработки данных (RDP / Windows / и т. Д.)

ИЛИ

Установить GNU или и запустить их после входа в систему.

я предпочитаю tmux так как screen довольно старая школа, но если вам разрешено устанавливать только поддерживаемые пакеты, screen находится в репо RHEL.

ИЛИ

Сделайте и то, и другое.

Старая ветка, я знаю, но для полноты картины, так как я искал то же самое ...

В Windows 7 или новее вы должны просто выбрать свой адаптер Wi-Fi и адаптер Ethernet и выбрать «Мостовое соединение». Это даст вам один IP-адрес для обоих, и теперь вы сможете отключать и повторно подключать Ethernet по своему желанию (при условии непрерывного покрытия Wi-Fi).

Проблема, вероятно, в том, что ваш исходный IP-адрес меняется при переключении между кабельным и Wi-Fi. Это предотвратит возврат сеансов ssh.

Я справился с этим в Linux, подключившись через vpn и убедившись, что vpn-соединение всегда дает один и тот же IP-адрес вашей учетной записи (нетрудно обеспечить соблюдение, но высока вероятность, что вы все равно получите тот же IP-адрес через vpn по умолчанию, если он доступно, но лучше обеспечить его соблюдение, чтобы быть уверенным). Я в основном использую vtun, но openvpn тоже подойдет. Убедитесь, что ваши соединения проходят через vpn (правильная маршрутизация, вставленные префиксы, ...)

Я мог быть в автономном режиме от кабеля даже на 5 минут, а затем подключился к Wi-Fi и по-прежнему мог оставаться подключенным ко всем своим сеансам ssh. Текущий ping, mtr, htop, ... просто продолжайте, когда vpn восстанавливается, как будто ничего не произошло.

Это нелегко сделать.

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

Я полагаю, вы могли бы написать такую ​​вещь, но я полагаю, что если бы это было легко сделать, мои клиенты не были бы изнасилованы пятизначными затратами за то, чтобы их терминальные соединения оставались открытыми на беспроводных портативных сканерах.

Хотя я наткнулся на экран, который утверждает, что создает постоянные сеансы SSH, который действительно может сработать ... попробуйте.

Ты можешь связь соединения Ethernat и Wifi.

Вот как я это делаю на RHEL:

# Run as sudo:
$ sudo -i

$ modprobe bonding

# To enable after reboot, add " bonding " to:
$ vi /etc/modules-load.d/bonding.conf

# Get your network interfaces IDs
$ nmcli device status | grep -E "wifi|eth"
  # enp0s31f6   ethernet  connected  
  # wlp58s0     wifi      connected  

# Add new connections
$ nmcli connection add type bond ifname bond0 con-name My-Connections-Bond
$ nmcli connection add type ethernet ifname enp0s31f6 master My-Connections-Bond con-name My-Eth-Connection
$ nmcli connection add type wifi ifname wlp58s0 master My-Connections-Bond ssid My-SSID con-name My-Wifi-Connection
  
# Add your Wifi credentials
$ nmcli connection modify My-Wifi-Connection wifi-sec.key-mgmt wpa-psk

$ nmcli connection edit My-Wifi-Connection

    nmcli> set wifi-sec.psk YOUR-PASSWORD  
    nmcli> save
    nmcli> quit

# Enable the connections
$ nmcli connection up My-Connections-Bond
$ nmcli connection up My-Eth-Connection
$ nmcli connection up My-Wifi-Connection
  

Это должно позволить вам перемещаться между вашими соединениями Wi-Fi и Ethernet и поддерживать текущие сеансы SSH, VPN и т. Д. Подключенными.

Кредиты для: https://fedoramagazine.org/bond-wifi-and-ethernet-for-easier-networking-mobility/

Попробуйте подключиться только к Wi-Fi при первом запуске сеанса ssh. Затем подключите ваш Ethernet. Это должно позволить новым соединениям проходить через Ethernet, но установленное соединение останется по Wi-Fi. По крайней мере, я видел, как это работает с OSX, поэтому ОС / оборудование могут отличаться.

Я почти уверен, что вы можете сделать это с помощью некоторого глупого взлома с виртуальными машинами и туннелированием.

Это не проверено, но дайте мне знать, действительно ли это работает.

  1. Создайте гостевую виртуальную машину, которая имеет 2 интерфейса, 1 мостовой адаптер (для Wi-Fi) и 1 сеть только для хоста
  2. Допустим, у виртуальной машины есть 192.168.0.25 для мостового адаптера к жене и 192.168.56.5 только для хоста.
  3. Внутри виртуальной машины создайте ssh-соединение с туннелем к порту 22 удаленной стороны. ssh -L 10022:remote.server.example.com:22
  4. Теперь подключаемся через туннель. ssh 192.168.56.3 -p 10022
  5. Когда вы потеряете соединение Wi-Fi, замените адаптер на виртуальной машине на адаптер Ethernet.
  6. Надеюсь, он не повредит или не испортит таблицу маршрутизации

дайте мне знать, если это сработает.

  1. Телефон Android с приличным оборудованием (samsung10 +) 2. Установите VMOS apt на телефон для рутированной среды vm или используйте любую виртуальную машину для подключения ноутбука, но используйте VirtualBox, потому что это безопасный способ
  2. Загрузитесь в живую ОС Linux, например NST
  3. Используйте опцию хот-спота на вашем телефоне (Android 10) вместе с точкой доступа Bluetooth, а также USB-модем от телефона для всех посетителей. Все одновременно подключаются к вашему телефону в качестве основного сетевого источника или позволяют подключаться к виртуальной машине Linux при одновременном использовании телефона и Wi-Fi-соединений
  4. Создайте ОС Windows 10 для разработчиков на Hyper-v и запустите все 3 устройства вместе, так как во всех сетевых параметрах подключены (pan, eth0, wlan0, usbnet) горячая точка, повторитель и usb-модем с телефона, а также горячая точка и usb-модем на Win10 dev VM с Wi-Fi и еще одна горячая точка из настроек dev os win10
  5. Легче использовать tor и i2p для более быстрой настройки, но это не нужно
  6. Запустите ssh на всех 3 или подключитесь, используя обычные настройки подключения ssh. Это должно дать вам возможность летать как орел.