Вопрос или проблема
Я открываю SSH-туннель (для переадресации портов) с ПК на Windows 10 на удалённый сервер Linux, вводя следующую команду в командной строке Windows:
(Примечание: замените фактический DNS на host_IPv4_public_DNS)
C:> ssh -i thekey.pem -N -f -L 8888:localhost:8888 host_IPv4_public_DNS
После выполнения этой команды туннель открывается и полностью функционирует. Проблема в том, что я не получаю обратно командную строку Windows (C:>). Процесс продолжает работать. Как мне завершить этот процесс/туннель?
Удалите -N из вашей команды, которая говорит ssh не выполнять команду
-N Не выполнять удалённую команду. Это полезно только для переадресации портов.
ssh -i thekey.pem -f -L 8888:localhost:8888 host_IPv4_public_DNS
Это будет ваша команда, если вы хотите иметь доступ к удалённому хосту, чтобы получить доступ к командной строке вашего хоста. Я бы выполнил
start /b ssh -i thekey.pem -f -L 8888:localhost:8888 host_IPv4_public_DNS
Это откроет соединение в фоновом режиме, и вы сможете завершить процесс после использования CTRL + BREAK
Ответ или решение
Чтобы завершить фоновый процесс SSH-туннеля, который был запущен с помощью команды ssh -i thekey.pem -N -f -L 8888:localhost:8888 host_IPv4_public_DNS
, можно воспользоваться следующими методами.
1. Завершение процесса по PID
Когда вы запускаете SSH-туннель в фоновом режиме с опцией -f
, он выполняется в фоновом процессе, и, конечно же, вы не получаете обратно командную строку. Чтобы завершить данный процесс, вам нужно знать его PID (идентификатор процесса).
Шаги:
-
Откройте новое окно командной строки.
-
Введите следующую команду, чтобы найти PID процесса SSH:
tasklist | findstr ssh
Это отобразит все процессы SSH, запущенные в системе.
-
Запомните PID или запишите его. Затем завершите процесс с помощью команды:
taskkill /F /PID [PID]
Замените
[PID]
на фактический PID, который вы получили ранее.
2. Использование команды для запуска в фоновом режиме
Если вы хотите запускать SSH-туннель в фоновом режиме, но при этом иметь возможность управлять процессом более удобно, вы можете воспользоваться следующей командой:
start /b ssh -i thekey.pem -N -L 8888:localhost:8888 host_IPv4_public_DNS
Используя start /b
, вы сможете запускать процесс в фоновом режиме, не блокируя командную строку, и у вас будет возможность продолжать работу в ней.
3. Обработка завершения
Важно помнить о том, что после выполнения SSH-туннеля в фоновом режиме, вы можете прервать его при помощи клавиш CTRL + BREAK
. Однако этот метод может не сработать во всех версиях Windows или в зависимости от конфигурации терминала.
Дополнительные рекомендации
-
Если вам часто нужно запускать SSH-туннели, вы можете рассмотреть возможность написания небольшого скрипта для автоматизации процесса. Это может включать автоматическое создание и завершение туннелей, что значительно упростит работу.
-
Убедитесь, что порт, используемый для перенаправления, не занят другими процессами и доступен для соединения.
Следуя этим шагам, вы сможете завершить SSH-туннель или запустить его в фоновом режиме более удобно.