FTP
FTP(或 File Transfer Protocol 文件传输协议)是一种协议,允许您在服务器和客户端之间传输文件(因为 FTP 使用客户端-服务器架构)。FTP 是最古老的协议之一,其起源可以追溯到 1971 年,根据 RFC 114。
FTP 也存在变体,包括 SFTP(SSH FTP,不要与 Simple FTP 混淆)和 FTPS(带有 TLS 的 FTP)。顾名思义,SFTP 是通过 SSH 完成的。FTPS 是带有 TLS 加密的普通 FTP。
阿尔派 Linux 有多种 FTP 客户端和服务器,您可以安装和使用,包括以下内容
也存在许多其他客户端,但上面提到的客户端是唯一涵盖的客户端。有关更多详细信息,请参见 #客户端。
服务器
vsftpd
在 阿尔派 Linux 中,默认的 FTP 服务器是 vsftpd。但是,由于常见的托管面板不处理其配置管理,因此它没有被广泛使用。另一方面,vsftpd 更安全,不需要太多更新。
vsftpd 还声称它是“最安全和最快的类 UNIX 系统的 FTP 服务器”。它是 NimbleX、Slackware 和许多其他 Linux 发行版中的默认 FTP 服务器。此外,由于配置相对容易,因此也推荐使用它。
以下是 vsftpd 具有的功能列表
功能 | 值/名称 | 注释 |
---|---|---|
配置文件 | /etc/vsftpd/vsftpd.conf | 默认配置是 vsftpd 的默认配置 |
文件默认路径 | /var/lib/ftp | 由于默认启用匿名访问,因此这是守护程序的默认主目录 |
日志文件 | /var/log/vsftpd.log | 可在 vsftp.conf 中配置 |
运行服务的用户 | vsftpd | 阿尔派 没有 ftp 用户;它使用同名的组代替。 |
常用组 | vsftpd | 用于在其他守护程序或服务(如 Redis 或 Apache)之间共享内容 |
局限性
- 不支持 SFTP
安装
要安装和运行 vsftpd,只需运行 apk add vsftpd
。可以选择同时安装 vsftpd-doc 软件包以获取文档。
要在启动时启用 vsftpd 并立即启动它,请运行以下命令。
rc-update add vsftpd default rc-service vsftpd start
配置
默认配置并不理想,因为默认情况下启用了匿名访问,并且仅启用了 IPv4 支持。因此,不应在生产环境中使用默认配置。一些常见的服务器配置方案包括允许匿名访问文件、用户系统 FTP 服务和虚拟用户(在服务器端)。
可以使用 vsftp.conf 文件中的特殊指令 user_sub_token
来支持每个用户的 FTP 文件。例如,如果启用它(过程在后面的“vsftpd 配置”部分中描述),则可以将其设置为类似于 /home/$USER/public_ftp 的内容
管理 vsftpd
启动 vsftpd:安装后,vsftpd 未运行。正如我们在第一节中所说,已经启动了,但如果您想手动启动 vsftpd,请使用
rc-service vsftpd start
如果启动 vsftpd 顺利,您应该看到类似于以下的输出
* Caching service dependencies ... [ ok ] * Starting vsftpd... [ ok ]
停止 vsftpd:如果您想停止 Web 服务器,请以与上一个命令相同的方式使用 stop
rc-service vsftpd stop
重启或重新加载 vsftpd:更改配置文件后,您必须重启或重新加载 vsftpd,新配置才能生效。您可以运行以下命令之一来实现所需的效果
rc-service vsftpd restart
rc-service vsftpd reload
后者重新加载 vsftpd 的配置文件,而前者完全重启 vsftpd。后者可能是首选,因为它避免了必须完全重新加载 vsftpd。
如果您重启了 vsftpd,则应该有类似于以下的输出
* Stopping vsftpd... [ ok ] * Starting vsftpd... [ ok ]
如果您重新加载了 vsftpd,则输出将类似于以下内容
* Reloading vsftpd... [ ok ]
使用正确的运行级别:在大多数情况下,使用“default”运行级别应该可以工作,尽管可能存在自定义运行级别,并且将 vsftpd 添加到“default”以外的运行级别可能更可取。但是,请记住,运行级别在 Docker 容器中不存在,因为 阿尔派 主要用于 Docker 中。
要将 vsftpd 添加到运行级别,请使用以下命令
rc-update add vsftpd [运行级别]
其中 [运行级别]
是您要将 vsftpd 服务添加到的运行级别的名称。例如,如果您想将 vsftpd 添加到“default”运行级别,请运行 rc-update add vsftpd default
测试 vsftpd
本节假设 vsftpd 正在运行。目前,可能没有允许或甚至可用的 ftp
用户,但服务器已启动并正在运行。
您可以使用 netcat 来测试是否成功连接到服务器
nc -zv [服务器地址]
请务必将 [服务器地址]
更改为服务器的实际 IP 地址。如果服务器正在运行,则常见响应将为 OPEN。如果您收到其他响应,请检查您的服务器配置。
客户端
由于 FTP 使用客户端-服务器架构,如果您想与 FTP 服务器交互,则需要 FTP 客户端。阿尔派 提供了几个用于命令行 FTP 客户端的软件包
如果您喜欢图形客户端,请查看以下内容
一些 Web 浏览器也支持 FTP,尽管大多数主流浏览器(如 Chrome 和 Firefox)已删除对该协议的支持。
lftp
lftp 是一个复杂的的文件传输程序,支持多种网络协议,包括 FTP、HTTP、SFTP、FISH 和 BitTorrent。它还具有以下功能
- 作业控制
- 支持书签
- 支持内置的 mirror 命令
- 支持并行文件传输
- 使用
readline
进行输入
功能 | 值/名称 | 注释 |
---|---|---|
软件包名称 | lftp | 安装:apk add lftp |
手册页和 -doc 软件包 |
vsftpd-doc | 安装:apk add lftp-doc |
系统配置文件 | /etc/lftp.conf | 阿尔派 几乎没有进行自定义 |
用户配置文件 | ~/.lftprc, ~/.lftp/rc | 前者首先读取,而后者在未找到前者时第二个读取。 |
安装
要安装 lftp,请运行 apk add lftp
自 阿尔派 3.6 以来,lftp 已在主存储库中提供,因此它是一个受支持的软件包,可以用于生产环境。
配置
主配置文件 /etc/lftp.conf 带有不同的示例和注释。在启动时,lftp 按确切的顺序读取 /etc/lftp.conf、~/.lftprc 和 ~/.lftp/rc。这些文件用于设置系统范围和用户特定的设置。
在配置文件中,使用命令 set,后跟设置的名称,再后跟其值。布尔值使用 on
/off
。
set ftp:ssl-force on set ssl:verify-certificate on set ftp:use-feat off set ftp:ssl-protect-data on
可以仅为特定服务器设置特定设置。在特定服务器的服务器名称前添加斜杠 (/)。
set ftp:use-feat off /example.com set ftp:ssl-force on /example.com
dns:
、net:
、ftp:
、http:
和 hftp:
域变量的闭包当前只是您在 open
命令中指定的主机名(在某些闭包无意义的例外情况下,例如 dns:cache-size
)。对于某些 cmd:
域变量,闭包是当前 URL,不带路径。对于其他变量,当前未使用。请参阅示例 lftp.conf
中的示例。更多信息
默认情况下,lftp 对于在后台执行的操作不是很详细。如果您想要更多输出,可以使用 'debug' 命令(不带 'set' 命令)
debug 5
将显示完整的调试输出。debug 3
将仅显示问候消息和错误消息。
请注意,从命令行使用 -d 开关将覆盖任何先前的调试设置,并将显示完整的调试输出。
如果您希望某些命令使用另一个名称调用,则可以使用 alias
命令设置别名。语法如下
alias [name] [command]
[name]
是 lftpd 别名的名称,[command]
是 lftpd 命令的名称。下面显示了几个示例
alias dir ls alias less more alias zless zmore alias bzless bzmore alias reconnect "close; cache flush; cd ." alias edit "eval -f "get $0 -o ~/.lftp/edit.tmp.$$ && shell \\"cp -p ~/.lftp/edit.tmp.$$ ~/.lftp/edit.tmp.$$.orig && vim ~/.lftp/edit.tmp.$$ && test ~/.lftp/edit.tmp.$$ -nt ~/.lftp/edit.tmp.$$.orig\\" && put ~/.lftp/edit.tmp.$$ -o $0; shell rm -f ~/.lftp/edit.tmp.$$*"
最后一个别名应全部在一行中。它获取远程文件,使用 vim 打开它,并将修改后的文件放回服务器上。当需要快速编辑和更新远程服务器上的文件时,这可能非常方便。
使用示例
以下是通过 SFTP 进行多部分下载的示例
$ lftp -e 'pget -c -n 5 /path/to/file' sftp://username@server
分解
- -e:执行命令
- pget:部分下载的命令,以及其选项
- -c:恢复选项
- -n:部分数量的选项
- sftp://username@server:服务器 URL
带有 GVfs 的 PCManFM
您可以将 PCManFM 文件管理器与 gvfs 插件用作图形 FTP 客户端。要连接到 FTP 服务器,您可以执行以下操作
- 从菜单栏中,转到 Go > 连接到服务器
- 选择 FTP 协议并输入您的用户名(路径是可选的)
- 稍后,您将输入您输入的用户名的密码