通过 SSHFS 实现 VPS 之间的文件系统挂载

其他评论110字数 1191阅读3分58秒

重要提醒:
本文中的 IP 地址 192.168.0.1192.168.0.2 仅为示例。请务必用您实际的 VPS IP 地址替换这些值,以确保操作正确无误。


一、背景与应用场景

在多服务器环境中,尤其是在 DevOps、开发测试、以及分布式系统管理中,可能需要将一台 VPS 的文件系统挂载到另一台 VPS 上,以实现高效的文件共享和管理。本文介绍如何通过 SSHFS(基于 SSH 的文件系统)挂载远程服务器的文件系统。文章源自ERI博客-https://eriboke.one/112.html

应用领域:

  • 数据同步:在两台服务器间快速共享文件。
  • 文件备份:将一台服务器的目录直接挂载到另一台服务器,用于实时备份。
  • 分布式开发:多个开发环境间的文件系统共享。

二、前置步骤:确保 VPS1 和 VPS2 通信

在开始配置前,需确保 VPS1(192.168.0.1)和 VPS2(192.168.0.2)可以正常通信。文章源自ERI博客-https://eriboke.one/112.html

步骤 1:检查网络连通性

在 VPS2 上运行以下命令测试能否通过 SSH 访问 VPS1:文章源自ERI博客-https://eriboke.one/112.html

ssh [email protected]

步骤 2:配置防火墙与安全组

  • 确保 VPS1 的 SSH 端口(默认 22)对 VPS2 的 IP 地址开放。
  • 如果使用云服务(如 AWS、Azure 或阿里云),请检查安全组规则。

三、在 VPS2 上配置 SSH 密钥

为了实现免密码登录,需要在 VPS2 上生成 SSH 密钥并上传到 VPS1。文章源自ERI博客-https://eriboke.one/112.html

步骤 1:生成 SSH 密钥

在 VPS2 上运行以下命令生成专用 SSH 密钥:文章源自ERI博客-https://eriboke.one/112.html

ssh-keygen -t rsa -b 4096 -f ~/.ssh/vps1_root_key
  • 系统会提示路径(默认路径为 ~/.ssh/vps1_root_key),直接按 Enter
  • 当系统要求设置密码短语时,可按 Enter 跳过,表示无需密码短语。

生成完成后,您将获得以下两个文件:文章源自ERI博客-https://eriboke.one/112.html

  • 私钥~/.ssh/vps1_root_key
  • 公钥~/.ssh/vps1_root_key.pub

步骤 2:上传公钥到 VPS1

将公钥上传到 VPS1 的 root 用户:文章源自ERI博客-https://eriboke.one/112.html

ssh-copy-id -i ~/.ssh/vps1_root_key [email protected]

提示:

  • 如果 VPS1 使用非默认 SSH 端口(如 2222),请添加 -p 参数:
  ssh-copy-id -i ~/.ssh/vps1_root_key -p 2222 [email protected]

步骤 3:测试免密码登录

在 VPS2 上测试通过密钥登录 VPS1:文章源自ERI博客-https://eriboke.one/112.html

ssh -i ~/.ssh/vps1_root_key [email protected]

如果无需输入密码即可成功登录,说明配置正确。文章源自ERI博客-https://eriboke.one/112.html


四、在 VPS2 上安装 SSHFS

SSHFS 是基于 FUSE 的工具,可用于通过 SSH 挂载远程文件系统。文章源自ERI博客-https://eriboke.one/112.html

步骤 1:安装 SSHFS

1.1 在 Debian/Ubuntu 系统上:

sudo apt update && sudo apt install sshfs -y

1.2 在 CentOS/RHEL 系统上:

sudo yum install epel-release -y
sudo yum install fuse-sshfs -y

步骤 2:检查安装

运行以下命令验证 SSHFS 是否成功安装:

sshfs --version

提示:

如果安装过程中提示当前内核版本(如 5.15.0-124-generic)已过时,请重启系统以加载新的内核:

reboot

五、在 VPS2 上挂载 VPS1 的文件系统

步骤 1:创建挂载点

在 VPS2 上创建一个用于挂载的目录:

mkdir -p /mnt/vps1_root

步骤 2:挂载 VPS1 的根目录

使用 SSHFS 将 VPS1 的根目录 / 挂载到 VPS2 的 /mnt/vps1_root

sshfs -o IdentityFile=/root/.ssh/vps1_root_key [email protected]:/ /mnt/vps1_root

参数解释:

  • -o IdentityFile=/root/.ssh/vps1_root_key:指定私钥路径。
  • [email protected]:/:指定 VPS1 的 root 用户及其根目录。
  • /mnt/vps1_root:VPS2 的挂载目录。

步骤 3:验证挂载

运行以下命令检查是否挂载成功:

ls /mnt/vps1_root

如果可以看到 VPS1 的目录内容(如 /etc, /var, /home 等),说明挂载成功。


六、设置自动挂载

为了避免重启后需要手动挂载,可以配置自动挂载。

步骤 1:编辑 /etc/fstab 文件

编辑 VPS2 的 fstab 文件:

nano /etc/fstab

添加以下行到文件末尾:

[email protected]:/ /mnt/vps1_root fuse.sshfs defaults,_netdev,IdentityFile=/root/.ssh/vps1_root_key,cache=yes,kernel_cache,reconnect,Compression=yes 0 0

步骤 2:测试自动挂载

执行以下命令测试自动挂载:

sudo mount -a

如果挂载成功,说明自动挂载配置正确。


七、总结与注意事项

总结

通过本教程,您已经学会如何:

  1. 配置 SSH 密钥:实现 VPS2 无密码访问 VPS1。
  2. 安装 SSHFS:通过 SSH 挂载远程文件系统。
  3. 挂载文件系统:将 VPS1 的文件系统挂载到 VPS2。
  4. 自动挂载:设置重启后自动挂载功能。

注意事项

  1. 安全性
  • 确保私钥文件权限为 600,仅限当前用户访问。
  • 配置防火墙规则,限制 SSH 端口的访问来源。
  1. 性能优化
  • 使用 cache=yes,kernel_cache 等参数提高访问性能。
  • 定期检查挂载目录的可用性,防止远程连接中断导致挂载失效。

通过上述方法,您可以高效实现多服务器间的文件系统共享和管理,适用于数据同步、文件备份等场景。如果您有任何问题,请随时与ERI联系或留言。

匿名

发表评论

匿名网友

拖动滑块以完成验证