重要提醒:
本文中的 IP 地址 192.168.0.1
和 192.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
如果挂载成功,说明自动挂载配置正确。
七、总结与注意事项
总结
通过本教程,您已经学会如何:
- 配置 SSH 密钥:实现 VPS2 无密码访问 VPS1。
- 安装 SSHFS:通过 SSH 挂载远程文件系统。
- 挂载文件系统:将 VPS1 的文件系统挂载到 VPS2。
- 自动挂载:设置重启后自动挂载功能。
注意事项
- 安全性:
- 确保私钥文件权限为
600
,仅限当前用户访问。 - 配置防火墙规则,限制 SSH 端口的访问来源。
- 性能优化:
- 使用
cache=yes,kernel_cache
等参数提高访问性能。 - 定期检查挂载目录的可用性,防止远程连接中断导致挂载失效。
通过上述方法,您可以高效实现多服务器间的文件系统共享和管理,适用于数据同步、文件备份等场景。如果您有任何问题,请随时与ERI联系或留言。