Я пытаюсь написать приложение go, которое позволит мне выполнить обратное ssh-туннелирование между машиной Windows и машиной Linux с помощью библиотеки go ssh.SSH Listener не закрывается
В процессе этого, я создаю слушатель на удаленном компьютере, следующим образом: remoteListener, err := sshClient.Listen("tcp", remoteString)
где sshClient является объектом типа ssh.Client и выполнен с возможностью подключения к удаленной машине.
Проблема в том, что когда процесс sshd на машине Linux нарушает соединение с приложением, прослушиватель ssh остается в живых на удаленной машине. Таким образом, повторное подключение к приложению не выполняется, потому что слушатель уже работает на том же порту на удаленной машине.
Как мне обойти эту проблему? Позволяет ли библиотека ssh определить тайм-аут для слушателя?
Как вы закрываете сеанс удаленной машине? Сервер ssh должен очищать соединение, если сеанс был завершен. - – JimB
Я тестирую сбой ssh, блокируя ssh-соединения на порту 2222 (порт, на котором я работаю), используя следующую команду: 'sudo iptables -D INPUT -p tcp -dport 2222 -j DROP' , Это, похоже, не очищает завершенную сессию. – shreyashk
Если вы просто отбрасываете пакеты, удаленный сервер не знает, что вы завершили сеанс. – JimB