要实现两个Debian 12系统的VPS之间通过FTP进行共享硬盘,具体步骤可以参考以下方式:

在第一台VPS上设置FTP服务器: 使用vsftpd(Very Secure FTP Daemon)作为FTP服务器工具。

listen_port=2100

安装并配置FTP服务器
bash
复制代码
sudo apt update
sudo apt install vsftpd -y
配置 vsftpd
编辑配置文件 /etc/vsftpd.conf:

bash
复制代码
sudo nano /etc/vsftpd.conf
确保以下设置:

makefile
复制代码
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
这些设置确保了只允许本地用户访问FTP,且支持读写功能。

创建FTP用户
创建一个新的用户(例如ftpuser)并为其设置密码:

bash
复制代码
sudo adduser ftpuser
sudo passwd ftpuser
配置FTP目录权限
设置用户的主目录为FTP目录,比如 /home/ftpuser:

bash
复制代码
sudo mkdir -p /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp
启动vsftpd服务
bash
复制代码
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
在第二台VPS上挂载FTP共享目录: 使用curlftpfs工具将FTP服务器的目录挂载到本地文件系统上。

安装curlftpfs
bash
复制代码
sudo apt update
sudo apt install curlftpfs -y
挂载FTP目录
创建挂载目录:

bash
复制代码
sudo mkdir /mnt/ftp_share
挂载FTP目录到该文件夹,格式如下:

bash
复制代码
sudo curlftpfs ftp://ftpuser:password@第一台VPS的IP地址 /mnt/ftp_share
这样,第二台VPS就可以通过/mnt/ftp_share访问第一台VPS的FTP共享目录。

自动挂载(可选): 要让系统重启后自动挂载FTP目录,可以在/etc/fstab文件中添加以下行:

shell
复制代码
curlftpfs#ftpuser:password@第一台VPS的IP地址 /mnt/ftp_share fuse rw,uid=1000,gid=1000,umask=0022,allow_other 0 0
设置权限: 如果你想让其他用户访问该挂载目录,确保allow_other和权限设置正确。

您说:
使用rclone呢
ChatGPT 说:
ChatGPT
使用rclone也是一个不错的选择,它支持多种存储协议,包括FTP,同时具有同步和加密功能。以下是用rclone在Debian 12系统上将一台VPS的FTP目录挂载到另一台VPS的方法:

步骤:
在第二台VPS上安装rclone

在第二台VPS上安装rclone(本地需要访问FTP的机器):

bash
复制代码
sudo apt update
sudo apt install rclone -y
配置rclone的FTP远程存储

使用rclone config命令来创建一个新的远程存储配置:

bash
复制代码
rclone config
然后按照以下步骤操作:

输入 n 新建一个新的配置。
输入一个名称,例如 myftp(用于标识这个FTP存储)。
选择存储类型,输入 ftp 选择FTP。
输入第一台VPS的IP地址作为Host。
输入username,例如 ftpuser。
输入password(会被加密存储)。
其他配置项保持默认,最后输入y确认保存。
测试连接

配置好之后,可以测试连接,看是否能正确访问FTP目录:

bash
复制代码
rclone ls myftp:/
如果看到FTP目录的文件列表,说明连接正常。

挂载FTP目录

选择一个挂载目录,比如 /mnt/ftp_share:

bash
复制代码
sudo mkdir /mnt/ftp_share
使用rclone mount命令将FTP目录挂载到本地文件系统中:

bash
复制代码
sudo rclone mount myftp:/ /mnt/ftp_share --vfs-cache-mode writes &
myftp:/ 是你在rclone配置中的FTP存储名称。
--vfs-cache-mode writes 选项让rclone在写入时缓存文件,以提高性能。
验证挂载

现在可以通过 /mnt/ftp_share 目录访问第一台VPS的FTP文件。

自动挂载(可选)

如果需要自动挂载,可以将rclone mount命令添加到系统启动脚本,例如 /etc/rc.local,或者创建一个systemd服务来管理:

创建 systemd 服务
创建一个rclone挂载服务文件 /etc/systemd/system/rclone-ftp.service,内容如下:

ini
复制代码
[Unit]
Description=Rclone FTP Mount
After=network-online.target

[Service]
User=root
ExecStart=/usr/bin/rclone mount myftp:/ /mnt/ftp_share --vfs-cache-mode writes
ExecStop=/bin/fusermount -u /mnt/ftp_share
Restart=always

[Install]
WantedBy=multi-user.target
保存后,启动并启用服务:

bash
复制代码
sudo systemctl daemon-reload
sudo systemctl start rclone-ftp
sudo systemctl enable rclone-ftp
这样就可以自动挂载FTP目录了,使用rclone的方式相对简单,而且支持多种协议和加密,适合需要灵活配置的场景。

您说:
curlftpfs和rclone对比哪个好
ChatGPT 说:
ChatGPT
curlftpfs和rclone在连接和挂载FTP目录时各有优劣,选择哪个工具取决于具体需求。下面是两者的对比:

  1. 功能性
    curlftpfs:专注于FTP挂载。它直接将FTP目录挂载到本地,适合基本的读写需求。
    rclone:支持多种存储协议(如FTP、SFTP、WebDAV、云存储等),可以跨平台同步数据。rclone功能丰富,适合在多种存储间同步、备份、加密,且具备细粒度的权限和缓存配置。
    对比:如果只需要简单的FTP挂载,curlftpfs足够;若需多存储、多协议支持和备份功能,rclone更合适。
  2. 稳定性
    curlftpfs:在文件读写、尤其是大文件操作上,稳定性可能不如rclone,且对于断开连接的恢复能力有限。
    rclone:有内置的断点续传和重试功能,可自动重连,适合长时间的同步任务和大文件操作。
    对比:对于频繁访问和大文件传输,rclone会更稳定。
  3. 性能
    curlftpfs:简单的挂载实现,适合小文件读写。大文件传输和大量小文件读写时性能可能受限。
    rclone:具备可选的缓存模式(如--vfs-cache-mode),可以缓解读写延迟,尤其适合读写频繁和大文件传输的场景。
    对比:rclone的缓存机制能提供更好的读写性能,特别是在处理大文件时。
  4. 配置和易用性
    curlftpfs:配置简单,专注于FTP挂载,安装和使用步骤较少。
    rclone:配置稍复杂,需要通过rclone config来设置远程存储,但配置完成后可以复用同一配置进行不同任务。
    对比:curlftpfs较简单,适合轻量需求;rclone在多次使用和管理多个存储时更方便。
  5. 安全性
    curlftpfs:直接通过FTP传输,FTP本身不加密(可使用FTPS加密)。FTP协议本身的安全性较低。
    rclone:支持加密传输,兼容FTP、SFTP、WebDAV和云存储API,可以配置端到端加密。
    对比:若有安全需求(如加密传输和数据加密),rclone是更安全的选择。

总结
选择curlftpfs:如果需求简单,且只需在本地挂载FTP目录进行少量读写操作。
选择rclone:若需要支持多种协议、断点续传、大文件传输、加密和更高的可靠性与安全性。rclone在性能和灵活性上优于curlftpfs,是更全面的选择。

您说:
vsftpd提示pam_listfile(vsftpd:auth): Refused user root for service vsftpd
ChatGPT 说:
ChatGPT
这个错误提示 pam_listfile(vsftpd:auth): Refused user root for service vsftpd 是因为 vsftpd 默认禁止 root 用户登录FTP,出于安全考虑,大多数FTP服务器会禁止 root 用户直接登录,以防止不必要的安全风险。

如果你确实需要 root 用户登录(尽管不推荐),可以通过以下步骤调整配置来允许 root 用户登录。

  1. 修改 vsftpd 配置文件
    编辑 vsftpd 的主配置文件 /etc/vsftpd.conf:

bash
复制代码
sudo nano /etc/vsftpd.conf
找到并修改以下设置,或者在文件末尾添加这些设置:

plaintext
复制代码

禁用匿名用户登录

anonymous_enable=NO

允许本地用户登录,包括 root 用户

local_enable=YES

启用写入权限

write_enable=YES

  1. 修改 PAM 配置文件
    vsftpd 使用 PAM(Pluggable Authentication Modules)来管理用户权限。PAM 的默认配置通常会阻止 root 用户登录,你可以通过编辑 PAM 配置来修改此行为。

编辑 /etc/pam.d/vsftpd:

bash
复制代码
sudo nano /etc/pam.d/vsftpd
找到以下行(如果存在):

plaintext
复制代码
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
这行配置会检查 /etc/ftpusers 文件,并拒绝其中的用户登录。如果你需要允许 root 登录,可以将 root 用户从 /etc/ftpusers 文件中移除。

  1. 移除 /etc/ftpusers 文件中的 root
    打开 /etc/ftpusers 文件:

bash
复制代码
sudo nano /etc/ftpusers
找到 root 这一行并将其删除或注释掉(在行首添加#号)。这样就不会阻止 root 用户登录FTP。

  1. 重启 vsftpd 服务
    保存文件并退出后,重启 vsftpd 服务以应用配置更改:

bash
复制代码
sudo systemctl restart vsftpd
注意事项
直接允许 root 用户通过 FTP 登录存在较大的安全风险。如果可能,建议创建一个普通用户并赋予所需的权限来完成 FTP 任务。