Linux网络信息(含ssh服务和rsync)

73.telnet:测试端口连通性

用法:telnet 主机名或IP 端口号

测试目标主机的指定端口是否开放,检查网络服务连通性。

eg:

telnet www.baidu.com 80

# 说明:

# - 如果连接成功,显示 "Connected to ..."。

# - 如果失败,显示 "Connection refused" 或 "Unable to connect"。

这会测试百度的 HTTP 服务(80 端口)是否可以连接。

常用场景:

测试服务器的特定服务是否正常运行。

检查防火墙是否阻止了指定端口。


74.tcpdump:网络数据包捕获工具

用法:tcpdump [选项] [过滤条件]

强大的网络抓包工具,支持实时查看或保存数据包,用于分析网络问题。

tcpdump 常用选项:

-i:指定监听的网络接口(如 eth0,ens33)。

-w:将捕获的数据包保存到文件(如 capture.pcap)。

-r:从文件中读取并解析数据包(如读取保存的 pcap 文件)。

-n:不解析主机名和服务名称,直接显示 IP 和端口号。

-nn:同时禁用主机名和端口解析,显示数字地址和端口号。

-c:限制捕获的数据包数量(如 -c 10 表示捕获 10 个包后退出)。

-X:显示数据包的十六进制和 ASCII 内容。

-A:以 ASCII 格式显示数据包内容(适合查看 HTTP 数据)。

-v:显示数据包的详细信息

# 1.捕获指定接口上的所有数据包

tcpdump -i eth0

# 2.捕获并保存数据包到文件

tcpdump -i eth0 -w capture.pcap

# 3.捕获来自特定 IP 的数据包

tcpdump -i eth0 src 192.168.1.100

# 4.捕获目标 IP 的数据包

tcpdump -i eth0 dst 192.168.1.200

# 5.捕获特定端口(如 80)上的流量

tcpdump -i eth0 port 80

# 6.捕获来自特定源 IP 且目标端口为 80 的数据包,并保存到文件 capture.pcap 里

tcpdump -i eth0 src 192.168.1.100 and dst port 80 -w capture.pcap -nn -v # 比较常用!

·抓取数据包: 用 tcpdump -i 接口 监听网络流量。

·保存数据分析: 用 -w 保存为文件,配合 Wireshark 等工具分析。

·过滤特定流量: 配合 src、dst 或 port 筛选数据包。

·查看详细信息: 用 -v 或更详细的 -vv 输出抓包细节。


75.nc (Netcat):网络工具的瑞士军刀

用法:nc 选项 [主机名或IP] [端口号]

支持 TCP 和 UDP 协议,用于网络调试、文件传输、服务模拟等。

nc 常用选项:

-l:监听模式,用于在本地创建服务器,等待客户端连接。

-z:扫描模式,检查端口是否开放,不发送任何数据。

-v:启用详细模式,输出更多的调试信息。

-u:使用 UDP 协议进行连接,而不是默认的 TCP。

-p:指定源端口。

-w:设置超时时间,单位为秒。

-n:禁用 DNS 解析,直接使用 IP 地址,而不是域名。

-v :详细输出,显示连接过程中的所有信息。

# 1.连接到远程主机的指定端口(TCP连接)

nc example.com 80

# 2.监听本地端口(创建服务器,等待连接)

nc -l 12345

# 3.通过 netcat 发送文件到远程主机

# 在远程机器上执行:nc -l 12345 > received_file.txt

# 在本地机器上执行:nc remote_host 12345 < file_to_send.txt

# 4.使用 UDP 协议发送数据

nc -u -l 12345 # 监听 UDP 端口 12345

nc -u remote_host 12345 # 发送数据到指定 UDP 端口

# 5.测试端口是否开放(可以用来检查某些端口是否能够连接)

nc -zv example.com 80 443

# 6.扫描端口范围(测试哪些端口开放)

nc -zv example.com 1-1000

# 7.通过 nc 实现简易的端到端聊天

# 在一台机器上执行:nc -l 12345

# 在另一台机器上执行:nc localhost 12345

# 然后你就可以发送消息了

# 8.创建一个简单的 HTTP 请求

echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

# 9.发送数据并接收响应

echo "Hello, World!" | nc example.com 80

76.ip/ifconfig:查看ip地址

用法:ip [命令] [选项]

lo:访问自己

ens33:访问别人

# 1. 查看ip地址(类似 ifconfig

ip addr show/ ip -a

# 2. 查看路由表

ip route show

# 3. 启用网络接口

sudo ip link set eth0 up

# 4. 禁用网络接口

sudo ip link set eth0 down

使用ifconfig需要先下载yum install net-tools(eth0改为ens33)

ifconfig ens33:0 192.168.8.11/24 down


补充一点:修改ip地址

使用ip命令(推荐)

  1. 临时添加一个新 IP 地址(不删除原有地址)

ip addr add 192.168.1.100/24 dev eth0

192.168.1.100:新 IP 地址

/24:子网掩码(等同于 255.255.255.0)

eth0:网络接口名称(需替换为实际接口名,如ens33)

  1. 临时修改(替换)当前 IP 地址

ip addr flush dev eth0 # 清空当前所有IP配置

ip addr add 192.168.1.101/24 dev eth0 # 添加新IP

  1. 临时添加第二个 IP 地址(多 IP 配置)

ip addr add 192.168.1.102/24 dev eth0 label eth0:1

eth0:1:虚拟接口名称(可自定义,用于区分多个 IP)

  1. 激活 / 禁用网络接口

ip link set eth0 up # 启用接口

ip link set eth0 down # 禁用接口

使用ifconfig命令(传统方法,部分系统已弃用)

  1. 临时添加一个新 IP 地址

ifconfig eth0:1 192.168.1.103 netmask 255.255.255.0 up

eth0:1:虚拟接口名称

192.168.1.103:新 IP 地址

  1. 临时修改(替换)当前 IP 地址

ifconfig eth0 192.168.1.104 netmask 255.255.255.0

  1. 激活 / 禁用网络接口

ifconfig eth0 up # 启用接口

ifconfig eth0 down # 禁用接口

注意事项

临时生效:上述方法配置的 IP 地址在重启网络服务或系统后会丢失。若需永久保存,需修改配置文件(如/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-eth0)。

权限要求:执行上述命令需要 root 权限(需使用sudo或切换到 root 用户)。

检查接口名称:使用ip a或ifconfig查看实际网络接口名称(如eth0、ens33、enp0s3等)。

冲突避免:确保新 IP 地址不在 DHCP 分配范围内,避免与其他设备冲突。

验证配置

配置完成后,使用以下命令检查 IP 地址是否生效:

ip a show eth0 # 查看接口详细信息

ping 192.168.1.1 # 测试网络连通性


77.nmtui:半图形化网络管理命令

Network Manage tui

·修改ip地址 等价于vim /etc/sysconfig/network-script/ifcfg-ens33

·重启网卡 systemctl restart network

·修改主机名 hostnamectl set-hostname 主机名


78.ssh:安全的远程连接

·通过非对称加密,实现数据传输的安全性。

·ssh协议

SSH(Secure Shell)协议是一种用于在网络中实现安全远程登录、文件传输和命令执行的加密网络协议。它通过加密技术保护数据在传输过程中的安全性,有效替代了传统的明文传输协议(如 Telnet、FTP),广泛应用于服务器管理、网络设备配置等场景。

一、SSH 协议的核心功能

远程登录

允许用户通过加密连接登录到远程服务器,就像在本地操作一样执行命令。例如,管理员可以通过 SSH 登录到云服务器进行配置。

安全文件传输

基于 SSH 协议的衍生工具(如 SCP、SFTP)支持加密的文件上传和下载,避免文件内容被窃听或篡改。

端口转发(隧道)

可建立加密 "隧道",将其他协议(如 HTTP、MySQL)的流量通过 SSH 传输,实现安全的跨网络访问(例如访问内网数据库)。

远程命令执行

支持在本地直接向远程服务器发送命令并获取结果,无需交互式登录(常用于脚本自动化)。

二、SSH 的加密原理

SSH 协议通过非对称加密和对称加密结合的方式保证安全性,主要过程如下:

握手阶段

客户端与服务器建立 TCP 连接后,协商 SSH 版本和加密算法(如 AES、ChaCha20)。

服务器向客户端发送公钥,客户端验证公钥合法性(首次连接时需手动确认)。

密钥交换

客户端生成一个临时对称密钥,用服务器的公钥加密后发送给服务器。

服务器用私钥解密得到对称密钥,此后双方使用该密钥对所有通信内容进行加密(对称加密效率更高)。

身份认证

密码认证:客户端发送加密后的密码,服务器验证。

密钥认证(更安全):客户端生成一对密钥(公钥 + 私钥),公钥存放在服务器,登录时服务器用公钥验证客户端私钥,无需输入密码。

ssh服务属于c/s Client/Server;

客户端远程连接:

ssh 用户名@ip/主机名/域名 [-p 端口号 (22)]

是否同意加密?yes

输入对方密码

exit 退出

允许指定用户进行登录(白名单)

在/etc/ssh/sshd_config 配置文件中设置AllowUsers选项,

在配置文件末尾添加行格式如下(例如允许用户tom通过192.168.8.30登录)。

AllowUsers tom@192.168.8.30

配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。

sshd:服务端,安装在服务器上(CentOS默认安装)

CentOS:yum install openssh-server

Ubuntu:sudo apt install openssh-server

修改sshd的配置文件:

vim /etc/ssh/sshd_config

systemctl restart sshd #重启服务

·跳板机:跳板机(Jump Server)是一种部署在网络边界或内部网络中的专用服务器,作为用户访问目标设备(如生产服务器、数据库、网络设备等)的中间节点,起到集中管控、安全审计、权限隔离的作用。

密钥验证

客户端的公钥存放到服务端,每次登录通过公钥进行验证,省略密码。

  1. 在客户端生成密钥对;私钥保存在本地,保证私钥的安全;

ssh-keygen #默认三个回车

  1. 将公钥发送到服务端/root/.ssh/authorized_keys进行保存;

ssh-copy-id 用户名@ip #输入密码(以下ip都是服务器的ip)

  1. 之后进行登录自动识别身份;

ssh root@192.168.8.20

XShell免密登录

1、工具------新建用户密钥生成向导------默认,下一步------完成

属性里可以看公钥,复制粘贴到服务器,vim .ssh/authorized_keys第二行

2、工具------身份验证配置文件------密钥类型:RSA;密钥长度:2048;下一步------默认,下一步------点刚刚设置的,密钥很多个就点第一个------点公钥,把下面一长串复制到要登陆的服务器里面(服务器打开vim .ssh/authorized_keys如何粘贴到第二行)------点菜单栏里的断开连接(在编辑下面)------用户名输入root------选择密钥登录(public key),直接确定。


79.scp:远程文件复制(和cp格式相似,只是改成了远程的路径)

命令格式:

上传:将本地文件发送到目标服务器上;

scp [-r] 原文件 root@ip:/目标路径

客户端 服务器

下载:将服务器上的文件下载到本地;

scp [-r] root@ip:/目标路径 本地目录

服务器 客户端

scp是全量复制:从头到尾全部复制,速度相对较慢


80.rsync:高效文件同步工具

·rsync是增量复制、差异复制,支持增量传输,只同步变化的部分,比 scp 更高效。

只复制增加和修改的文件,一般用来做备份

·格式:rsync [选项] 本地文件 root@ip:路径

rsync [选项] root@ip:文件 本地路径

常用选项:

-a,--archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-v,--verbose详细模式输出。

-z:--compress对备份的文件在传输时进行压缩处理。

--delete:删除目标中源目录不存在的文件。

-e:指定远程传输方式(如 SSH)。

# rsync同步目录或文件

rsync -avz --delete redis-6.2.14 root@192.168.8.20:/root


问题:如何实现实时同步?

接下来,我们将配置rsync和inotify来实现实时文件同步:

1.生成SSH密钥对并上传公钥 在服务端生成SSH密钥对,并将公钥上传到客户端,以便实现无密码的SSH连接。

2.创建同步脚本 在服务端创建一个名为sync.sh的脚本文件,并添加以下内容:

#!/bin/bash

while inotifywait -r -e modify,create,delete,move /data/;do

rsync -avz /data/ root@192.168.8.11:/opt/data/

done

3.授予脚本执行权限并执行

chmod +x sync.sh

./sync.sh ##脚本会一直运行,并在`/data/`目录中的文件发生变化时进行实时同步

4.测试同步

在服务端/data目录下新建名为12345的文件,服务端提示/data创建了12345文件,并开始发送增量文件。 切换到客户端可以看到/data/目录下所有文件已实时同步到客户端/opt/data

相关推荐
一叶知秋yyds10 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
瀚高PG实验室10 小时前
审计策略修改
网络·数据库·瀚高数据库
forAllforMe10 小时前
etherCAT的协议VoE,FoE,EoE,CoE的概念和区别
网络
专吃海绵宝宝菠萝屋的派大星10 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
斯普信云原生组10 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
大数据新鸟11 小时前
操作系统之虚拟内存
java·服务器·网络
迷藏49411 小时前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构
zmj32032411 小时前
汽车电子内部网络架构图
网络·汽车
safestar201212 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
来一颗砂糖橘12 小时前
负载均衡的多维深度解析
运维·负载均衡