端口管理
Jun 20, 2021 • 🍻 03min 29s read
🔖 networkportsshnetstat
CAUTION
本文未完成,长期更新中...
端口和进程
¶列出所有进程 id 和端口信息
1$ sudo netstat -ntlp杀死占用了指定端口的进程
1234567$ 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]\+'
: 过滤出进程 idsort | 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
Related
¶