
포트 '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 -
답변1
누가 포트 2022를 사용하고 있는지 확인하는 올바른 명령은 다음과 같습니다.
sudo ss -ntp
첫째, 지금은 더 이상 사용되지 않는 Nestat를 사용해서는 안 됩니다(Linux를 사용하는 경우에는 그렇게 생각하지만 Unix를 사용하는 경우에는 이것을 잊어버리십시오). 둘째, 다음과 같이 명령을 실행해야 합니다.sudo, 그렇지 않으면 포트를 사용하여 프로세스를 표시할 권한이 없습니다. 셋째, 반드시 해야 한다~ 아니다깃발을 사용하다유, 이는 UDP 포트를 보는 것을 의미하기 때문에 오류가 발생하는 동안SSH이는 UDP가 아닌 TCP를 가장 확실하게 사용하고 있습니다.
답변2
이를 위해 몇 가지 방법을 사용할 수 있습니다. netstat는 원하는 작업을 수행하는 명령줄 도구입니다. 명령줄 예는 다음과 같습니다.
# netstat -tulpn
이렇게 하면 시스템의 포트와 이를 수신하는 응용 프로그램이 방지됩니다.
도움이 되었기를 바랍니다
답변3
현재 이 오류를 해결하는 방법은 내 서버에 로그인하고 ps -ef | grep ssh
내 사용자가 생성한 모든 세션을 종료하는 것입니다.
답변4
빠른 한 줄만 사용하면됩니다.
for pid in `netstat -tunpl | awk '{print $4, $7}' | grep ':2022' | awk '{print $2}' | cut -d '/' -f1`; do kill -9 $pid; done