Как мне найти процесс, который прослушивает порт 'xxxx', и уничтожить его?

У меня есть RemoteForward 2022 remote.host:22 в моем файле .ssh/config.

Всякий раз, когда я захожу по ssh на удаленный сервер: ssh staging-environment я получаю эту ошибку: Warning: remote port forwarding failed for listen port 2022

Мне нужен этот порт для переадресации портов.

Как мне найти процесс, который прослушивает порт 2022, и уничтожить его?

ОБНОВИТЬ:

Вывод netstat -tulpn

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:81                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:83                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:84                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:85                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:86                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:2022              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:2023              0.0.0.0:*                   LISTEN      -

4 ответа4

1

Правильная команда, чтобы увидеть, кто использует порт 2022:

  sudo ss -ntp

Во-первых, вы не должны использовать nestat, который к настоящему времени устарел (если вы работаете в Linux, как я полагаю, но если вы работаете в Unix, просто забудьте об этом); во-вторых, вы должны выполнить команду как sudo, иначе у вас не будет прав для отображения процессов с использованием порта; в-третьих, вам определенно не следует использовать флаг u, потому что это означает просмотр портов UDP, в то время как вы получаете сообщение об ошибке по ssh, который наиболее определенно использует TCP, а не UDP.

0

В настоящее время я могу обойти эту ошибку, выполнив вход на свой сервер и ps -ef | grep ssh и уничтожить все сеансы, созданные моим пользователем.

0

Вы можете использовать несколько методов, чтобы сделать это. netstat - это инструмент командной строки, который должен делать то, что вы хотите. Пример командной строки будет выглядеть примерно так:

# netstat -tulpn

Это позволит избежать портов в вашей системе и того, какое приложение его слушает.

Надеюсь это поможет

0

Просто быстрый лайнер сделает это

for pid in `netstat -tunpl | awk '{print $4, $7}' | grep ':2022' | awk '{print $2}' | cut -d '/' -f1`; do kill -9 $pid; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .