8.6 网络相关命令
• ssh:远程连接到Linux系统
ssh root@10.8.0.13
ssh root@10.8.0.13 pwd 远程在其他系统上执行命令,输出到本地终端
▶ ssh-keygen:生成免密秘钥对,一把公钥,给到需要登录的电脑,一把私钥自己保存。
▪ ssh -keygen交互式执行命令
▪ ssh-keygen -t rsa -b 1024 -P '' -f /root/.ssh/id_rsa
-t:指定密钥类型,可以是rsa、dsa、或ecdsa。默认为rsa
-b:指定密钥长度,以位为单位。默认为2048位
-C:在密钥文件中添加注释
-f:指定输出文件名。默认为id_rsa
-N:禁止在密钥文件中添加注释
-q:静默模式,不提示任何信息。
-V:显示版本信息
-P:设置私钥的密码。空字符串代表不设置密码
▪ ssh-copy-id:把生成的秘钥对的公钥传递给对方
ssh-copy-id root@xxx.xxx.xxx.xx
• ip:用于配置、管理和监控网络接口
常用:ip a ip route
▶ nmcli:配置网卡信息
▪ 查看网卡:nmcli connection show nmcli device status
▪ 关闭网卡:nmcli connection down 网卡名
▪ 启用网卡:nmcli connection up 网卡名
▪ 删除网卡配置:nmcli connection delete 网卡名
▶ 增加网卡配置:
▪ 添加动态ip地址的配置:
nmcli connection add \
type ethernet \
ifname ens32 \
con-name ens32 \
autoconnect yes ipv4.method auto
▪ 创建静态ip地址的配置:
nmcli connection add \
type ethernet \
ifname ens32 \
con-name ens32 \
autoconnect yes \
ipv4.method manual \
ipv4.address xxx.xxx.x.xx/24 \
ipv4.gateway xxx.xxx.xx.x \
ipv4.dns 223.5.5.5
▪ 修改:
nmcli connection modify \
•
•
• dhclient:从DHCP服务获取ip地址配置信息
dhclient -v ens32:获取ip地址
dhclient -r ens32:释放ip地址
• telnet:检查服务端口是否启用
telnet 127.0.0.1 99:检查127.0.0.1的99端口是否启用
• ss:查看tcp和udp连接、监听端口、进程ID等信息
ss -tulnp:
-t:TCP
-u:UDP
-l:仅显示监听的套接字
-n:不解析服务名称,直接显示数字形式的IP地址和端口号
-p:显示与套接字关联的进程ID和程序名称
▶ firewall-cmd:
▪ 允许特定IP地址的访问:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.xx" port protocol="tcp" port="80"accept'
▪ 允许特定IP地址的ssh登录:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.xx" service name="ssh" accept'
▪ 拒绝所有IP连接ssh服务:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" reject'
▪ 删除富规则:
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" service name="ssh" reject'
• lsof:“谁占了我的资源?”
▪ 端口被占用了,我想知道是哪个程序干的:
lsof -i :8080 -i是查网络相关的 :8080就是端口号
▪ 我想看某个用户开了哪些网络连接:
lsof -u root
▪ 我想看某个进程打开了哪些文件:
lsof -p 1234
▪ 我想找谁打开了某个文件/目录
lsof /var/log/nginx/access.log
目录:
lsof +D /var/log
• fuser:“谁在用这个文件/端口?给我进程号!”
▪ 我想知道谁在用8080端口:
fuser 8080/tcp
▪ umount /mnt 卸载不了磁盘,说“设备忙”:
fuser -m /mnt -m是查挂载点
▪ 端口被占用,直接干掉它(!!!!!慎用!!!!!)
fuser -k 8080/tcp
• nc(netcat):万能的网络工具,能发数据、收数据、测端口、当临时服务器
▪ 测一下某个IP的端口通不通(替代telnet):
nc -vz 192.168.1.100 22
-v:显示详细信息 -z:只测连通性,不发送数据
▪ 扫描一个IP的哪些端口是开的:
nc -vz 192.168.1.100 20-80:扫描20到80端口,看哪些能连上
▪ 临时开个“聊天室”(两台电脑互发文字):
电脑A(服务端):nc -l 12345
电脑B(客户端):nc A的IP 12345
两边都连上后,A打字,B能看到;B打字,A也能看到。ctrl+c退出
• 表格(lsof,fuser,nc)
需求| 用哪个| 命令
---|---|---
谁占了 8080 端口?| lsof / fuser| lsof -i :8080 / fuser 8080/tcp
某个进程在干啥?| lsof| lsof -p PID
U盘卸不掉,谁在用?| fuser| fuser -m /mnt/usb
端口被占,强制释放| fuser| fuser -k 8080/tcp
测服务器端口通不通| nc| nc -vz IP 端口