Как закрыть существующий туннель SSH?

В Windows я создаю запланированную задачу при запуске Windows:

C:\cygwin64\bin\ssh.exe -R 2222:127.0.0.1:3389 user@PublicHost

для предоставления моей службы rdp на сервере с общедоступным IP, и я могу успешно подключить rdp, но я не могу найти ssh.exe в диспетчере задач, и когда я закрываю окна, иногда порт 2222 PublicHost не освобождается, поэтому позже я снова загружаю окна, ssh.exe выдаст мне предупреждение , переадресация порта не удалась.

Есть ли способ попросить PublicHost освободить порт (у меня нет доступа root на PublicHost)?

1
задан 8 September 2016 в 19:17
3 ответа

Можете ли вы запустить ssh на переднем плане, чтобы получить приглашение оболочки и просто выйти из сеанса ssh?

Потому что, если Windows завершает работу и завершает работу ssh.exe, он должен закрыть этот порт. И если сервер не запускает его, отправка вашего собственного сигнала уничтожения, скорее всего, будет иметь такой же эффект (если вы сможете найти его в диспетчере задач).

Или, возможно, вы можете войти (вручную или с помощью сценария) в PublicHost и убить что-то на этой стороне (например, / bin / bash вашего UID), чтобы соединение было разорвано?

0
ответ дан 4 December 2019 в 05:53

Если вы просто подключаетесь к порту 2222 PublicHost, он должен попытаться отправить трафик через туннель. Это приведет к тайм-ауту (через несколько минут) или получению ответа сброса (немедленно), что приведет к закрытию соединения и завершению процесса sshd.

Вы можете сделать это с помощью любого количества инструментов, но вот один из способов сделать это автоматически из Windows:

C:\cygwin64\bin\ssh.exe user@PublicHost "echo x | nc 127.0.0.1 2222"
0
ответ дан 4 December 2019 в 05:53

Я бы посоветовал посмотреть параметры ClientAliveCountMax и ClientAliveInterval sshd_config - это поможет sshd обнаружить неконтролируемое соединение и очистить его в этом случае.

0
ответ дан 4 December 2019 в 05:53

Теги

Похожие вопросы