跳板机实现 SSHFS 挂载
# 使用跳板机实现 SSHFS 挂载远程目录在企业内网、云平台或安全隔离环境中,服务器之间往往不能直接互通,但我们有时候需要将一台服务器的数据目录挂载到另一台服务器上。本文介绍如何通过“跳板机”(堡垒机)实现**SSHFS 跨服务器挂载**。## 典型场景- 服务器A和服务器B不直接互通。
- 服务器A与跳板机C互通,服务器B与跳板机C互通。
- 你希望在B上访问A的数据目录。### 网络拓扑图
[Server B]───┐
│
[JumpHost C]
│
[Server A]───┘
- **Server A**:目标数据服务器,无法直接被 B 访问
- **Server B**:希望访问 A 上目录的服务器
- **JumpHost C**:作为跳板机,A和B都能访问假设各服务器的 IP(仅举例):
- Server A:`192.168.10.10`
- Server B:`192.168.20.20`
- JumpHost C:`10.10.10.10`## 方案一:使用 SSH ProxyJump(推荐)`sshfs` 支持通过跳板机进行挂载,核心是 `-o ProxyJump` 参数。### 步骤1. **在 B 服务器新建挂载目录**```bashmkdir -p ~/remote_data_from_a```2. **使用 sshfs 命令带上 ProxyJump**```bashsshfs -o Compression=no -o ProxyJump=user_c@10.10.10.10 user_a@192.168.10.10:/data ~/remote_data_from_a```- `user_c`:JumpHost C 的用户名- `10.10.10.10`:JumpHost C 的 IP- `user_a`:Server A 的用户名- `192.168.10.10`:Server A 的 IP- `/data`:A 上要挂载的目录- `~/remote_data_from_a`:B 上本地挂载点3. **访问挂载目录**- 现在你可以在 B 上通过 `~/remote_data_from_a` 访问 A 上的数据。## 方案二:兼容旧版本的 ProxyCommand如遇 `sshfs` 版本较老,使用 `ProxyCommand`:```bash
sshfs -o Compression=no -o 'ProxyCommand=ssh -W %h:%p user_c@10.10.10.10' user_a@192.168.10.10:/data ~/remote_data_from_a
关键注意事项
-
挂载目录(如
~/remote_data_from_a
)需事先创建。 -
建议 A、C、B 三台服务器互设 SSH 密钥免密,减少频繁输入密码。
-
可用如下命令测试跳板连通性:
ssh -J user_c@10.10.10.10 user_a@192.168.10.10
-
sshfs
和ssh
都需支持 ProxyJump/ProxyCommand。可用ssh -V
查看版本(OpenSSH 7.3+ 支持 ProxyJump)。 -
出现挂载问题时,尝试添加
-o debug
或检查网络、防火墙、权限等。
总结
通过跳板机配合 SSHFS,可以轻松突破服务器直连受限的环境,在安全可控的前提下实现数据共享和同步操作。如果实际场景中有多层跳板,也可多次叠加 ProxyJump
,命令类似。
如需更自动化或批量脚本操作,可考虑结合 ssh config
配置实现免命令行参数。