我如何找到正在监听端口“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,那就忘了这一点);其次,你应该运行以下命令:须藤,否则你将无权显示使用该端口的进程;第三,你一定要不是使用旗帜你,因为这意味着查看 UDP 端口,而你正在收到错误远程控制,它肯定使用的是 TCP,而不是 UDP。
答案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