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)
2. 临时修改(替换)当前 IP 地址
ip addr flush dev eth0 # 清空当前所有IP配置
ip addr add 192.168.1.101/24 dev eth0 # 添加新IP
3. 临时添加第二个 IP 地址(多 IP 配置)
ip addr add 192.168.1.102/24 dev eth0 label eth0:1
eth0:1:虚拟接口名称(可自定义,用于区分多个 IP)
4. 激活 / 禁用网络接口
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 地址
2. 临时修改(替换)当前 IP 地址
ifconfig eth0 192.168.1.104 netmask 255.255.255.0
3. 激活 / 禁用网络接口
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 # 测试网络连通性
76.nmtui:半图形化网络管理命令
Network Manage tui
·修改ip地址 等价于vim /etc/sysconfig/network-script/ifcfg-ens33
·重启网卡 systemctl restart network
·修改主机名 hostnamectl set-hostname 主机名
77.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 退出
sshd:服务端,安装在服务器上(CentOS默认安装)
CentOS:yum install openssh-server
Ubuntu:sudo apt install openssh-server
修改sshd的配置文件:
vim /etc/ssh/sshd_config
systemctl restart sshd #重启服务
·跳板机:跳板机(Jump Server)是一种部署在网络边界或内部网络中的专用服务器,作为用户访问目标设备(如生产服务器、数据库、网络设备等)的中间节点,起到集中管控、安全审计、权限隔离的作用。
密钥验证:
客户端的公钥存放到服务端,每次登录通过公钥进行验证,省略密码。
- 在客户端生成密钥对;私钥保存在本地,保证私钥的安全;
ssh-keygen #默认三个回车
- 将公钥发送到服务端/root/.ssh/authorized_keys进行保存;
ssh-copy-id 用户名@ip #输入密码(以下ip都是服务器的ip)
- 之后进行登录自动识别身份;
ssh root@192.168.8.20
XShell免密登录
1、工具——新建用户密钥生成向导——默认,下一步——完成
属性里可以看公钥,复制粘贴到服务器,vim .ssh/authorized_keys第二行
2、工具——身份验证配置文件——密钥类型:RSA;密钥长度:2048;下一步——默认,下一步——点刚刚设置的,密钥很多个就点第一个——点公钥,把下面一长串复制到要登陆的服务器里面(服务器打开vim .ssh/authorized_keys如何粘贴到第二行)——点菜单栏里的断开连接(在编辑下面)——用户名输入root——选择密钥登录(public key),直接确定。
78.scp:远程文件复制
命令格式:
上传:将本地文件发送到目标服务器上;
scp [-r] 原文件 root@ip:/目标路径
客户端 服务器
下载:将服务器上的文件下载到本地;
scp [-r] root@ip:/目标路径 本地目录
服务器 客户端
scp是全量复制:从头到尾全部复制,速度相对较慢
79.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
问题:如何实现实时同步?