高级 Linux 网络命令高级 Linux 网络命令高级 Linux 网络命令高级 Linux 网络命令
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

高级 Linux 网络命令

本高级 Linux 网络命令课程解释了任何高级 Linux 用户都必须了解的最重要的网络相关命令。

阅读本教程并将所有示例复制为练习后,用户将掌握 Linux 下最相关的网络命令。这些命令允许用户诊断网络问题、通过不同方法传输文件、扫描和打开端口等等。

以下内容适用于所有 Linux 发行版。所描述的所有示例都包含屏幕截图,使所有读者都可以轻松理解如何应用命令及其输出或结果:

  • 使用 SFTP(安全文件传输协议)传输文件

  • 使用 SCP(安全复制协议)传输文件

  • “rsync”命令

  • “whois”命令

  • “nslookup”命令

  • “traceroute”命令

  • 使用 Netcat 打开端口并传输文件

  • 基本和高级 Nmap 命令

  • 反向代理

  • 网络监控

  • 设置VPN

  • UFW(简单防火墙)

SFTP 协议及其工作原理

从历史上看,称为 FTP 的协议是通过从 FTP 服务器上传和下载文件来共享文件的主要方法。 FTP 服务器存储文件,根据分配的权限,用户可以在指定目录中读写。

出于安全原因,FTP 目前未使用,并被另外两个协议取代:SFTP(安全文件传输协议)和 SCP(安全复制协议)。本教程中对这两者进行了解释。

SFTP(安全文件传输协议)是 FTP 协议的替代品,FTP 协议存在严重漏洞。

使用此协议,您可以通过单个命令或交互式界面上传、下载和删除文件和目录。本节涵盖这两种方法。

在开始使用 SFTP 之前,对于小型网络来说,一个好的做法是用密钥身份验证代替密码身份验证方法。

SFTP协议的安全性由SSH(Secure Shell)协议提供。要更改身份验证方法,用户需要编辑 SFTP 服务器上的 /etc/ssh/sshd_config 文件。

服务器是存储文件的设备,其他设备向其上传文件或从其下载文件。

要在服务器计算机上启用密钥身份验证,请使用权限打开 /etc/ssh/sshd_config 文件,并找到包含 PubkeyAuthentication no 的行。将其替换为 PubkeyAuthentication yes(将“no”替换为“yes”)。

sudo nano /etc/ssh/sshd_config

使用 systemctl 重新启动 ssh 服务以应用更改,如下所示:

sudo systemctl restart ssh

这就是用户需要在服务器端做的所有事情。

在客户端,即访问服务器上传或下载文件的计算机,用户需要通过执行以下命令来生成密钥对。

当被询问时,用户可以选择输入一个密码,在登录可选的额外安全措施时将要求该密码。如果用户不想要它,他只需在请求时按 ENTER 即可。就我而言,我输入了它。

ssh-keygen

运行上一个命令 ssh-keygen 后,需要将密钥复制到服务器。

将密钥发送到服务器的语法如下,其中 必须替换为服务器中的现有用户,并且 必须替换为服务器IP。

ssh-copy-id <User>@<ServerIP>

就我而言,我运行它如下所示。当要求时,读者必须输入他正在登录的服务器上的用户密码,如下所示:

ssh-copy-id linux@192.168.0.103

正如您在前面的屏幕截图中看到的,密钥已成功复制。

SFTP 的第一个示例解释了交互模式。

要连接到 SFTP 服务器,请使用以下语法,其中 必须替换为远程用户, 必须替换为 SFTP 服务器 IP 地址。

sftp <User>@<ServerIP>

就我而言,我运行命令,如下所示:

sftp linux@192.168.0.103

如您所见,登录成功,用户收到 sftp> 命令提示符,用户可以在其中执行命令。

sftp服务允许用户在登录后执行不同的操作。

用户可以在本地和远程级别显示并移动到允许的目录和子目录。

可以执行cd(更改目录)、ls(列表)或pwd(打印工作目录)等命令并且会影响服务器。它们与服务器交互或在服务器上打印信息。

cd 命令可用于在服务器远程目录之间移动。 ls 命令显示服务器上的远程文件。 pwd 命令显示服务器中当前的远程工作目录。

此外,如果用户执行lcd,该命令将显示当前本地工作目录(在客户端上)。 lls命令显示客户端当前本地工作目录中的文件和目录。如果执行lpwd命令,它会打印客户端上当前的本地工作目录。只需添加一个l(“local”),它就会在本地级别执行。

在以下示例中,用户连接到 SFTP 服务器,然后运行 pwd 命令,该命令返回当前远程工作目录(在服务器上)。

然后,用户执行lpwd命令,该命令返回当前本地工作目录(在客户端)。

如果用户执行lls,则会显示当前本地工作目录中的文件和目录。在下面的屏幕截图中,该命令显示在 user1 主目录中只有一个名为 Desktop 的子目录。

如果用户在登录服务器时想要移动到另一个本地目录,则可以使用 lcd 命令,如下所示。正如您在下面的lpwd执行中看到的,工作目录从/home/user1更改为/home/user1/Desktop。

要远程移动到服务器中的另一个目录(而不是本地),请照常使用 cd 命令。

cd <Directory>

登录服务器后下载文件的语法如下:

get <FileName>

或者

get </Path/To/File>

在以下示例中,我使用 get 下载名为“unetbottin-linux64-702.bin”的文件。

正如您在输出中看到的,文件已正确下载。

要下载目录而不是文件,请添加 -r 标志,如下所示:

get -r <Directory>

如上图所示,输出显示了每个下载文件的进度。

要将文件上传到服务器,请使用 put 命令,后跟要上传的文件或文件路径。

要上传目录,请添加 -r 标志。

put nftablesrules.txt

要从服务器注销,请使用exit命令。

exit

这些是登录服务器后最常用的命令。

以下示例描述了无需预先登录的 sftp 命令用法。登录过程是命令本身的一部分。

这些命令允许您直接从命令行上传或下载文件,而无需访问前面描述的交互式界面。

使用 SFTP 使用单个命令下载文件的语法如下,其中 是服务器上现有的远程用户,冒号后的 是要下载的文件的路径,< LocalDirectory> 是用户要保存文件的目录的路径。

sftp <User>@<ServerIP>:<Remote/Path/To/File> <LocalDirectory>

在以下示例中,用户将位于远程 xsser 子目录中的文件 README.md 下载到由点表示的当前本地工作目录。

sftp linux@192.168.0.103:xsser/README.md .

在以下示例中,相同的文件被下载到位于主目录下的本地 Desktop 目录。

sftp linux@192.168.0.103:xsser/README.md ~/Desktop

要下载目录,请添加 -r 标志。在以下示例中,整个 xsser 目录将下载到桌面本地目录。

sftp -r linux@192.168.0.103:xsser/ ~/Desktop

正如您所看到的,该目录及其所有内容都被递归下载。

使用 SCP 传输文件

SCP(安全复制协议)是另一个有用的文件传输命令。

使用 SCP 下载文件的语法如下:其中 是服务器上的现有用户, 是用户要从中下载文件的 SCP 服务器, 是文件或文件位置,是用户想要保存下载的文件的客户端本地目录。

scp <RemoteUser>@<ServerIP>:<Path/To/File> <LocalDirectory>

在以下示例中,用户下载位于服务器子目录 Documents 下名为 File1 的文件。用户将文件保存在他的 home 下的本地 Desktop 子目录中。

scp  linux@192.168.0.103:Documents/File1 ~/Desktop

下载目录需要几乎相同的语法,除了所需的 -r 标志。

在以下示例中,实现 -r 标志来下载名为 LhintDir 的目录并将其保存在本地目录 MyDir。

scp -r  linux@192.168.0.103:~/LhintDir ~/MyDir

要上传文件,语法如下:其中 是要上传到服务器的本地文件或路径。 是上传文件的服务器目录。

scp <FiletoUpload> <RemoteUser>@<ServerIP>:<RemoteDirectory>

在下一个示例中,用户将名为 File1 的文件上传到位于远程用户主目录下的远程子目录 Documents 。

scp File1 linux@192.168.0.103:Documents/

要上传目录,请使用相同的语法,但所需的 -r 标志除外。

在下一个示例中,Desktop 目录将上传到远程Documents 子目录。

scp -r Desktop/ linux@192.168.0.103:Documents/

scp 命令还允许用户在两台远程计算机之间传输文件。

用户不必从他的计算机下载或上传文件。他可以从两台他没有物理访问权限且之前没有ssh登录的计算机传输文件。

语法如下:用户使用 IP1 创建远程主机,将文件 传输到第二个远程主机 (IP2) 目录 (Path/Dir)。

scp <UserHost1>@<IP1>:<PathToFile> <UserHost2>@<IP2>:<Path/Dir>

在以下示例中,IP 为 10.0.0.2 的远程计算机将 ~/Documents/file.txt 发送到 IP 为 10.0.0.23 的计算机。该文件存储在第二台远程计算机上的子目录Downloads中。

scp RemoteUser1@10.0.0.2:Documents/file.txt RemoteUser2@10.0.0.23:Downloads

SFTP 和 SCP 是在 Linux 系统之间传输文件的最流行的方法。下一章重点介绍远程克隆目录或文件系统。

“rsync”命令

同步可以在同一台计算机的两个目录之间进行,也可以在两台不同计算机之间进行。

Rsync 广泛用于备份服务器,通过将源文件或目录中所做的所有更改应用到目标文件或目录来保持备份最新。备份是增量的,这意味着一旦创建备份,当对源进行更改时,仅更新更改,而不需要再次传输整个备份。

要在基于 Debian 的 Linux 发行版上安装 Rsync,请使用 apt 软件包管理器,如下所示:

sudo apt install rsync

将远程目录同步、备份或克隆到本地目录的语法如下:其中 -a 指示 rsync 包含主目录(否则,它仅复制内容,跳过主目录)。

其余字段与 sftp 和 scp 具有相同的语法,这在本文档的第一章和第二章中进行了解释。

rsync -a <RemoteUser>@<ServerIP>:</RemoteDirectory> <LocalDirectory>

正如您在前面的屏幕截图中看到的,目录 testdir 已成功从远程计算机 home 目录复制到本地 Desktop 目录。

以下语法用于将文件发送到远程目录。其中 -a 包含主目录,-v 指示详细程度,-z 指示压缩以提高传输速度。

rsync -avz <LocalDirectory> <RemoteUser>@<ServerIP>:</RemoteDirectory>

下一个示例显示了与上一个示例相反的情况。本地目录testdir被传输到远程~/Downloads目录。

rsync -avz ~/Desktop/testdir linux@192.168.0.103:~/Downloads

这就是您可以将目录或文件从另一台计算机复制到另一台计算机的方法。

“whois”命令

whois 命令允许用户了解有关域名或 IP 地址专有、注册商、注册和到期日期等信息。

某些 Linux 发行版默认不安装此命令。在基于 Debian 的发行版上,用户可以使用 apt 包管理器安装它,如下所示:

sudo apt install whois

要在基于 RedHat 的发行版上安装 whois,请使用以下命令:

yum install whois

或者 :

dnf install whois

安装完 whois 后,运行它并输入域名。

通过执行以下命令,用户可以了解域名linux教程的信息。

whois linux教程

正如您所看到的,我们在本例中了解到的只是域名注册器 (Godaddy) 以及创建日期和到期日期。

由于域名有隐私保护代理,返回的信息信息量不是很大。

让我们尝试一个没有隐私保护的网站:

whois merlenorman.com

正如您所看到的,它首先抛出有关域名注册商、日期、城市等的信息。

通过向下滚动,用户可以看到有关所有者、邮政编码、地址、电话和传真号码、电子邮件等的附加信息。

whois 命令还允许用户查询 IP 地址。

在以下示例中,除了替换域的 IP 之外,语法相同。

whois 200.108.145.10

该IP属于阿根廷网络信息中心。

正如您所看到的,它返回有关谁负责该生物体、地址、电话号码、电子邮件、DNS 等的信息。

这是获取网站和 IP 地址信息的好方法。

“nslookup”命令

nslookup 命令行工具对于向域名服务器发送查询以获取域名信息非常有用。

它允许我们了解指定域的IP和DNS记录。

当不带参数执行时,nslookup 可以在交互模式下使用。但本教程通过单个命令介绍了它的用法。

第一个示例执行nslookup,后跟域名。

nslookup linux教程

正如您在前面的屏幕截图中看到的,当nslookup在不带选项的情况下执行并且仅后跟域名时,它返回所有A 记录。

以下带有 -type=mx 参数的命令返回所有邮件服务器上的信息。

nslookup -type=mx linux教程

用户还可以使用该命令通过提供链接到域名的 IP 地址来进行反向nslookup。

在以下示例中,nslookup 使用 NameCheap 公司的 IP 执行。正如您所看到的,输出返回了正确的域名。

nslookup 198.54.117.250

“traceroute”命令

所有现代操作系统都包含跟踪路由功能。此功能非常适合诊断网络问题,包括速度测试和跟踪无法到达目的地的数据包。

当流量通过互联网时,每个中介的路由设备称为“跳”。 Traceroute 有助于识别哪些跃点以某种方式影响我们的流量,例如延迟或阻止流量。

以下示例显示了 lanacion.com 的简单跟踪路由(不带选项):

traceroute lanacion.com

在前面的示例中,您会看到本地路由器 192.168.0.1 和 linux教程 之间有 9 个跃点或路由设备。显示通配符的跃点 8 不会回复跟踪路由数据包 (* * *)。

IP 地址(右侧)后面的计时表示往返时间(以毫秒为单位)。往返时间是指数据包到达目的地并返回源设备所需的时间。有 3 次,因为默认情况下,traceroute 发送 3 个数据包。这是可以修改的。

要修改数据包数量,请使用 -q 选项,后跟要发送的数据包数量。

在以下示例中,-q 标志用于仅发送 1 个数据包。

traceroute -q 1 linux教程

如果您无法访问互联网网站等网络资源,traceroute 可以帮助您了解流量中断的位置。

使用 Netcat 打开端口并传输文件

nc (netcat) 命令是系统管理员最有用的工具之一。 Netcat 或nc 对于许多任务都很有用,例如重定向、端口扫描、服务器诊断、文件传输、网络监控等。本教程展示了两个用于扫描端口和通过网络传输文件的 nc 命令示例。

以下示例显示如何使用 nc 将名为“File1”的文件通过端口 23 从一台计算机发送到另一台计算机。

在接收文件的目标计算机上,运行以下命令,将 23 替换为您要使用的端口,并将“File1”替换为您要接收的文件的名称或路径。

-w 标志指定超时,-l 指示 nc 侦听指定端口。

sudo nc -w 2 -l 23 > File1

在发送计算机上运行以下命令:

sudo nc -w 2 -l 23 > File1

如您所见,执行ls后,会列出该文件。它保存在用户执行 nc 的当前工作目录中。

nc -vl 22 | gunzip > File1

在下面的示例中,实现了gunzip来压缩传输的文件。

要传输压缩文件,请在接收计算机上运行如下所示的命令:

sudo nc -w2 -l 22 | gunzip > File1.zip

在发送计算机上运行命令,如下所示:

gzip -c ~/File1 | nc -w 2 192.168.0.103 22

正如您在下一个屏幕截图中看到的,文件已正确传输。

sudo nc -w2 -l 22 | gunzip > File1.zip

高级 Nmap 命令

Nmap(网络映射器)是用 C/C++ 编写的最流行的安全扫描器。它用于发现主机、映射和扫描网络、端口和主机。当实施NSE(Nmap脚本引擎)时,用户能够检测目标上的安全漏洞。

虽然 Nmap 基本命令在本课程的第一部分(Linux 网络基本命令)中进行了解释,但我决定为没有阅读基本网络命令文档的用户提供一些基本命令来开始本节。

当不带参数且仅后跟域名执行时,Nmap 默认情况下会扫描每个协议的 1.000 个最常用端口。

在以下示例中,执行nmap来扫描linux教程。

正如您在输出中看到的,http/https 和代理端口已打开。输出还报告其余 996 个端口已被过滤(可能被防火墙过滤)。

nmap linux教程

-e 标志允许用户指定 nmap 通过其启动扫描的网络设备。在以下示例中,为 nmap 指定网络设备 wlp3s0。

nmap -e wlp3s0  linux教程

Nmap 和端口

本小节显示使用 Nmap 指定端口的不同选项。

要指定端口,请使用 -p 标志,如以下扫描端口 443 的示例所示。

nmap -p 443 linux教程

您可以通过用逗号分隔来指定多个端口。

nmap -p 80,8443,21,23 linux教程

您可以同时使用端口号和协议名称。在以下示例中,您可以看到指定了协议 http,而不是端口 80。

nmap -p 23,http 162.0.232.43

通过实施连字符,用户可以指定端口范围。在以下示例中,用户指定了从端口 75 到端口 80 的范围。

nmap -p 75-80 linux教程

Nmap 和目标

本小节解释指定目标的不同方法。

在前面的示例中,仅扫描单个主机/IP。

在下图中,用户在 IP 地址的最后一个八位字节中指定了 IP 范围。 Nmap 扫描端口 22,从 IP 172.67.160.10 到 172.67.160.20。

nmap -p 22 172.67.160.10-20

用户还可以通过实施通配符来扫描从 0 到 255 的八位位组或多个八位位组的所有范围。以下示例扫描从 172.67.160.1 到 172.67.160.255 的 IP 地址:

nmap -p 22 172.67.160.*

-iR选项指示Nmap扫描一些随机IP地址。

在下图中,nmap 扫描 100 个随机地址中的端口 139:

nmap -p 139 -iR 100

用户可以选择包含要扫描的主机/IP 列表的文件。

在下图中,nmap 扫描文件 Targets.txt 中列出的目标列表。文件格式简单;只需在每行键入一个主机或 IP。

nmap -iL targets.txt

如果用户有一个包含他想要跳过的主机的列表,他可以实施 –exclude 选项,如下图所示。 linux教程 域被排除在外。

nmap -p ssh,ftp,80 -iL targets.txt --exclude linux教程

这些是 Nmap 提供的定义目标的不同方法。

Nmap 和操作系统/版本检测

本节介绍如何使用Nmap检测目标操作系统和软件版本。

要检测目标的操作系统,用户可以实现 -O 标志,如下所示,其中检测到了 Linux 2.6.x:

sudo nmap -O argentina.gob.ar

要了解每个端口上的软件版本,请使用 -sV 标志,如下所示。如您所见,检测到 Apache 2.4.29:

nmap -sV nw.mercedes.gob.ar

用户可以定义版本检测的强度。零 (0) 是强度较低的扫描,而 9 是强度最高的扫描。默认情况下,如果未定义强度(如前面的示例所示),则强度级别为 7。

在下面的示例中,以最大强度实现版本检测,并检测到Nginx。

nmap -sV --version-intensity 9 www.unlam.edu.ar

-f 标志可用于指示 Nmap 对数据包进行分段,使目标更难检测到扫描。

sudo nmap -p 80,ssh -f linux教程

使用Nmap查找安全漏洞

NSE(Nmap 脚本引擎)允许通过包含用于附加任务(例如漏洞检测或利用)的脚本来在扫描过程中实现附加功能。

Nmap 脚本引擎包含按类别分类的脚本。用户还可以使用自定义功能编写自己的脚本。

本节通过实际示例介绍 NSE 基础知识,展示如何使用 NSE 破解 WordPress 网站和 SSH(安全外壳)凭据或运行一些额外的安全检查。

使用 NSE 运行 Nmap 之前的第一步是更新脚本数据库。为此,请使用以下命令:

sudo nmap --script-updatedb

使用 NSE 脚本的语法如下:其中