安全文件传输基础

LinuxBeginner
立即练习

介绍

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

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

学习目标

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

使用 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 连接。

exit

请确保在点击“Continue”按钮之前关闭 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 连接。

bye

在点击“Continue”按钮之前,请确保关闭 FTP 连接。

将文件复制到远程服务器

SCP (Secure Copy) 是一个命令行工具,允许你在本地机器与远程服务器之间,或两台远程服务器之间安全地传输文件。它利用 SSH (Secure Shell) 对传输的数据进行加密,从而确保文件传输的安全性。

scp 命令的基本语法如下:

scp [options] [source] [destination]

source(源)和 destination(目标)参数既可以是本地的文件或目录,也可以是格式为 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,这些选项可用于自定义文件传输。