当前位置: 首页 > news >正文

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     # 测试网络连通性


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

http://www.xdnf.cn/news/1165141.html

相关文章:

  • 微信二维码扫描登录流程详解
  • 网络编程之 UDP:用户数据报协议详解与实战
  • 嵌入式八股文之 struct 和 union 的区别、大厂真题1、头文件中的#ifdef/#define/#endif作用是什么?
  • React探索高性能Tree树组件实现——react-window、react-vtree
  • Kafka 如何优雅实现 Varint 和 ZigZag 编码
  • AXI接口学习
  • 在github上搭建自己主页
  • Spring Boot 3核心技术面试指南:从迁移升级到云原生实战,9轮技术攻防(含架构解析)
  • 添加状态信息
  • Linux find命令:强大的文件搜索工具
  • 代码审计Tabby安装教程
  • 神经网络——归一化层
  • nextjs编程式跳转
  • LinkedList的模拟实现(双向链表Java)
  • Java注解家族--`@ResponseBody`
  • 神经网络——线性层
  • 【c++】leetcode5 最长回文子串
  • 蚂蚁数科AI数据产业基地正式投产,携手苏州推进AI产业落地
  • 奥比中光深度相机开发
  • 感知机-梯度下降法
  • 141 个 LangChain4j Maven 组件分类解析、多场景实战攻略
  • 一个月掌握数据结构与算法:高效学习计划
  • hot100回归复习(算法总结1-38)
  • 零拷贝技术(Zero-Copy)
  • 网络协议(四)网络层 路由协议
  • C++基于libmodbus库实现modbus TCP/RTU通信
  • 大模型——上下文工程 (Context Engineering) – 现代 AI 系统的架构基础
  • C# 实现:动态规划解决 0/1 背包问题
  • iOS开发 Swift 速记2:三种集合类型 Array Set Dictionary
  • OCR 身份识别:让身份信息录入场景更高效安全