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

相关推荐
AORO20251 分钟前
遨游三防科普:三防平板是指哪三防?一般什么人用?
网络·5g·电脑·制造·信息与通信
RoronoaV58710 分钟前
Linux系统安装Bash自动补全(bash-completion)
linux·运维·bash
wydxry20 分钟前
同步本地文件到服务器上的Docker容器
服务器·docker·eureka
幻雨様30 分钟前
UE5多人MOBA+GAS 27、死亡被动(用于作为击杀奖励,爆金币和是增加经验)
java·服务器·ue5
GGBondlctrl33 分钟前
【接口自动化】掌握接口自动化:核心概念讲解(理论知识)
运维·自动化·接口测试·接口自动化
青靴2 小时前
MySQL的完整安装(无报错)和shell脚本一键安装MySQL
运维·数据库·mysql
riverz12273 小时前
Jenkins 多架构并发构建实战
运维·架构·jenkins
塔能物联运维5 小时前
电缆安全双保险:不止防盗,更能防触电的塔能智慧照明守护方案
网络
满天点点星辰6 小时前
Linux命令大全-df命令
linux·运维·服务器
lichenyang4538 小时前
Http和Https
网络·网络协议·http