安全文件传输基础

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

本实验将介绍使用 Linux 命令行通过 SFTP、FTP 和 SCP 传输文件的基础知识。这些工具通常用于在远程服务器之间传输文件,对于诸如将网站文件上传到服务器或从远程机器下载数据等任务非常有用。

我们已经在实验环境中配置了 SFTP 和 FTP 服务器。在实际使用时,请确保你拥有访问远程服务器所需的凭据(如用户名和密码),并且服务器已配置为允许通过 SFTP、FTP 和 SCP 进行文件传输。

学习目标

  • sftp - 安全文件传输协议 (Secure File Transfer Protocol)
  • ftp - 文件传输协议 (File Transfer Protocol)
  • scp - 安全复制 (Secure Copy)

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/exit("Shell Exiting") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/RemoteAccessandNetworkingGroup -.-> linux/scp("Secure Copying") linux/RemoteAccessandNetworkingGroup -.-> linux/sftp("Secure File Transferring") linux/RemoteAccessandNetworkingGroup -.-> linux/ftp("File Transferring") subgraph Lab Skills linux/exit -.-> lab-40{{"安全文件传输基础"}} linux/grep -.-> lab-40{{"安全文件传输基础"}} linux/redirect -.-> lab-40{{"安全文件传输基础"}} linux/service -.-> lab-40{{"安全文件传输基础"}} linux/sudo -.-> lab-40{{"安全文件传输基础"}} linux/ssh -.-> lab-40{{"安全文件传输基础"}} linux/scp -.-> lab-40{{"安全文件传输基础"}} linux/sftp -.-> lab-40{{"安全文件传输基础"}} linux/ftp -.-> lab-40{{"安全文件传输基础"}} end

使用 SFTP 连接到远程服务器

SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种在本地机器和远程服务器之间安全传输文件的方式。

要使用 SFTP 连接到远程服务器,可以使用 sftp 命令,后跟用户名以及服务器的 IP 地址或主机名。例如:

sftpuser 的密码是 123456

sftp sftpuser@127.0.0.1
## 输入 yes 以接受服务器的指纹

系统会提示你输入用户的密码。输入正确的密码后,你将成功连接到远程服务器。

使用 SFTP 传输文件

连接到远程服务器后,你可以使用 putget 命令来传输文件。

要将本地机器上的文件上传到远程服务器,可以使用 put 命令,后跟本地文件的路径。例如:

put /home/labex/.zshrc

要从远程服务器下载文件到本地机器,可以使用 get 命令,后跟远程文件的路径。例如:

get .zshrc

完成文件传输后,可以使用 exit 命令关闭 SFTP 连接。

使用 FTP 连接到远程服务器

FTP(File Transfer Protocol,文件传输协议)是一种标准的网络协议,用于在本地机器和远程服务器之间传输文件。与 SFTP 相比,FTP 的安全性较低,因为它以明文形式传输数据。

你可以通过运行以下命令检查 FTP 服务的状态:

sudo service vsftpd status

如果 FTP 服务未运行,可以通过运行以下命令启动它:

sudo service vsftpd start

要使用 FTP 连接到远程服务器,可以使用 ftp 命令,后跟服务器的 IP 地址或主机名。例如:

FTP 的用户名为 ftpuser,密码为 123456

ftp 127.0.0.1

系统会提示你输入服务器的用户名和密码。输入正确的凭据后,你将成功连接到远程服务器。

使用 FTP 传输文件

连接到远程服务器后,你可以使用 putget 命令来传输文件。

要将本地机器上的文件上传到远程服务器,可以使用 put 命令,后跟本地文件的路径。例如:

## 将 .zshrc 文件上传到服务器并重命名为 zshrc-upload
put /home/labex/.zshrc zshrc-upload

文件将被上传到服务器上的当前目录(/home/ftpuser)。

要从远程服务器下载文件到本地机器,可以使用 get 命令,后跟远程文件的路径。例如:

get zshrc-upload

文件将被下载到本地机器的当前目录。

在 FTP shell 中运行 help 命令可以查看更多关于 FTP 命令的信息。

完成文件传输后,可以使用 byeexit 命令关闭 FTP 连接。

复制文件到远程服务器

SCP(Secure Copy,安全复制)是一个命令行工具,允许你在本地机器和远程服务器之间或两个远程服务器之间安全地传输文件。它使用 SSH(Secure Shell,安全外壳协议)来加密传输的数据,确保文件传输的安全性。

scp 命令的基本语法如下:

scp [options] [source] [destination]

sourcedestination 参数可以是本地文件或目录,也可以是远程文件或目录,格式为 username@host:path

例如,要将本地机器上的文件 file.txt 复制到 IP 地址为 127.0.0.1 的远程服务器,可以使用以下命令:

要获取 labex 用户的密码,请在桌面终端中输入 printenv | grep PASSWORD

SCP 命令示例
cd ~/project

## 查看 labex 用户的密码
printenv | grep PASSWORD

## 将文件复制到远程服务器
scp file.txt labex@127.0.0.1:/home/labex/file-scp.txt

## 输入 labex 用户的密码

从远程服务器下载文件

你也可以使用 scp 从远程服务器下载文件。

例如,要从 IP 地址为 127.0.0.1 的远程服务器下载文件 file.txt 到本地,可以使用以下命令:

scp labex@127.0.0.1:/home/labex/file-scp.txt /home/labex/file-scp-new.txt

你也可以将本地目录设置为目标路径,确保路径末尾包含斜杠 (/)。

SCP 高级选项

scp 还提供了多个高级选项,可用于自定义文件传输。一些最常用的选项包括:

  • -r - 此选项允许你递归复制整个目录。
  • -C - 此选项在文件传输期间启用压缩,对于在慢速连接上传输大文件非常有用。
  • -P - 此选项允许你为连接指定端口号。

例如,要将本地机器上的 ~/Desktop 目录复制到 IP 地址为 127.0.0.1 的远程服务器,并使用压缩并指定端口号,可以使用以下命令:

scp -r -C -P 22 ~/Desktop labex@127.0.0.1:/home/labex/Code/

总结

本实验介绍了 Linux 中的 SFTP、FTP 和 SCP 命令,这些命令用于在本地机器和远程服务器之间或两个远程服务器之间传输文件。SFTP 是一种安全的文件传输方式,而 FTP 是一种标准的网络协议,安全性不如 SFTP。SCP 是一个命令行工具,允许你使用 SSH(Secure Shell,安全外壳协议)加密传输的数据,在本地机器和远程服务器之间或两个远程服务器之间安全地传输文件。实验还介绍了 SCP 命令的一些高级选项,例如 -r-C-P,这些选项可用于自定义文件传输。