🔖 networkportsshnetstat
CAUTION

本文未完成,长期更新中...

端口和进程

  • 列出所有进程 id 和端口信息

    1
    $ sudo netstat -ntlp
  • 杀死占用了指定端口的进程

    1
    2
    3
    4
    5
    6
    7
    $ sudo netstat -nltp\
    | grep ':1001\|:1002'\
    | awk '{print $7}'\
    | grep -o '^[0-9]\+'\
    | sort\
    | uniq\
    | xargs kill -9

    其中:

    • sudo netstat -nltp: 列出所有进程 id 和端口信息(如果不使用 root 权限,有些进程 id 不会显示)
    • grep ':1001\|:1002: 过滤出使用了端口号 1001 或 1002 的进程
    • awk '{print $7}': 只打印记录了进程 id 的那一列数据
    • grep -o '^[0-9]\+': 过滤出进程 id
    • sort | uniq: 去重
    • xargs kill -9: 杀死进程
    TIP

    末尾的反斜杠指示解释器命令未结束,需连结下一行内容一起解析;若反斜杠后面跟随了任意字符(包括空格),则它会被解析成“对反斜杠右侧的字符进行转义”。

  • 根据指定端口,查看进程 id(如果不使用 root 权限,有些进程 id 不会显示)

    1
    $ sudo lsof -i:8080

反向隧道

反向隧道用于在外网中访问内网的机器的 SOCKET 地址,也可以是在虚拟机中访问本机的回环地址上的端口。隧道的本质是一个数据转发通道,通道两侧的入口/出口分别位于本机和远程服务器中,则远程服务器向自己的某个端口(隧道的一侧)发送数据,这份数据会直接转发到本机的端口(隧道的另一侧),以此实现内网穿透。

  • SSH 反向隧道

    创建一个从本机 127.0.0.1:3000 到远程服务器 3000 端口的隧道,则在远程服务器中可以直接访问 127.0.0.1:3000.

    1
    $ ssh remote-machine -Nf -R :3000:127.0.0.1:3000

    也可以指定远程服务器所绑定的某个具体的 ip 地址:

    1
    $ ssh remote-machine -Nf -R 192.168.0.1:3000:127.0.0.1:3000

端口转发

  • 监听本机所有地址上的 5050 端口,并将其上面的所有请求都转发到 127.0.0.1:8080 (实现类似跳板机的效果)

    1
    $ socat tcp-l:5050,fork,reuseaddr tcp:127.0.0.1:8080
© 2017-2025 光和尘有花满渚、有酒盈瓯

Comments