Раніше я ssh -L 10002:192.168.0.30:10002 192.168.1.135
встановлював переадресацію портів, але тепер мені потрібно її видалити.
Як це зробити?
Раніше я ssh -L 10002:192.168.0.30:10002 192.168.1.135
встановлював переадресацію портів, але тепер мені потрібно її видалити.
Як це зробити?
Відповіді:
Якщо ви використовуєте Linux, ви можете вбити процес:
ps aux | grep ssh
а потім використовувати
kill <id>
Щоб вбити процес.
Якщо команда kill не є успішною, ви можете спробувати
kill -9 <id>
kill -9
до того моменту, як тільки ви спробували kill
. Багато процесів матимуть обробники сигналів, які очистять їх використання ресурсів, чисто закриють з'єднання та інші завдання перед відключенням. Якщо ви вбиєте з -9, процес негайно вмирає, не роблячи прибирання. Вбивство без -9 буде працювати більшу частину часу.
kill -9
без причин - це як використовувати рушницю для вбивства комара. :)
pgrep ssh | xargs kill
. Не використовуйте -9
для нічого насправді
ssh
команда, або що всі ssh
команди, які ви виконуєте, добре вбивати. Це навряд чи хороше загальне припущення.
ssh
примірників на декількох віддалених серверах, деякі з них без мого прямого участі. Наприклад, режим Emacs Tramp відкриває ssh
з'єднання за кадром, коли я відвідую віддалений буфер. Деякі користуються файловими системами користувачів, які роблять щось подібне. Це зовсім не рідкість. Насправді я вважаю, що один користувач, один ssh
екземпляр, є випадком використання бахроми меншості. Якщо це працює для вас, добре для вас, але загальна порада це не добре.
Під час використання ssh мультиплексування вбивати процес ssh часто небажано (це вбиває всі відкриті зв’язки з цим хостом), і ви не можете легко отримати доступ до втечі, оскільки "втеча недоступна для мультиплексованих сесій". Правильний спосіб - це запустити аналог команди переадресації, яку потрібно скасувати, але додавши -O cancel
. Наприклад:
ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135
Це відключить переадресацію цього порту, не припиняючи сеанс. Знову ж, це буде працювати лише в тому випадку, якщо для з'єднання до 192.168.1.135 використовується ssh мультиплексування .
ssh -O exit 192.168.1.135
.
Як скасувати пересланий порт у вже запущеному сеансі SSH:
-KL port
Ви повинні побачити це:
ssh> -KL 10002
Canceled forwarding.
Ви можете скористатися "клавішею втечі" (як правило ~), а потім C, щоб отримати кліп до свого з'єднання. Ви можете видалити тунелі, не знімаючи з'єднання.
Ви можете ввести інтерактивну консоль, ввівши ~C(з великої літери "C"). Це дозволяє динамічно додавати та видаляти переадресацію портів (серед кількох інших речей).
Ця послідовність повинна відбуватися відразу після повернення / нової лінії перевезення. Тож сумнівайтеся, просто введіть Enter~C(послідовно).
Якщо ви не бачите, як символи з’являються на консолі, ви все робите правильно :)
Тепер ви повинні побачити ssh>
підказку.
Щоб видалити порт, просто введіть, -KL 10002
а за ним Enter(де 10002
ваш перенаправлений порт).
Зворотне - додавання нового вперед - можна зробити так (від початку до кінця):
Enter~C
ssh> -L 10002:192.168.0.30:10002
Enter
~C escape not available to multiplexed sessions
. Якщо це так, дивіться відмінну відповідь a3nm.
Warning: remote port forwarding failed for listen port
повідомлення.