尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SSHFS自动挂载指南:systemd + pam_mount开机自挂载完整实战

SSHFS自动挂载指南:systemd + pam_mount开机自挂载完整实战 SSHFS自动挂载指南systemd pam_mount开机自挂载完整实战【免费下载链接】sshfsA network filesystem client to connect to SSH servers项目地址: https://gitcode.com/gh_mirrors/sshfs1/sshfsSSHFS 是一款通过 SSHSFTP协议将远程服务器目录挂载为本地磁盘的网络文件系统客户端本文带你用 systemd 和 pam_mount 两种方案实现 SSHFS 自动挂载真正做到开机、登录后远程目录自动就位无需手动敲一条挂载命令。先认识一下 SSHFSSSHFS 的核心能力只有一句话把远程 SSH 服务器上的目录挂载成本地的一个文件夹。大多数 SSH 服务器默认就开启了 SFTP 子系统所以服务端几乎零配置。基本用法完整参数可参考 sshfs.rst 这份手册文档# 挂载远程目录 sshfs user192.168.1.100:/data /mnt/remote # 卸载Linux 使用 fusermount3 fusermount3 -u /mnt/remote手动挂载没问题但每次开机、每次登录都要重复一遍就太麻烦了——这正是「SSHFS 自动挂载」要解决的事。下面给出 3 种可落地的方案从推荐到备选依次介绍。一步到位安装 SSHFS各大 Linux 发行版官方源均已收录 SSHFS项目已随 libfuse 官方仓库回归维护并持续发布版本直接装即可# Debian / Ubuntu sudo apt install sshfs # Fedora sudo dnf install fuse-sshfs # Arch sudo pacman -S sshfs 安装脚本 utils/install_helper.sh 会自动在sbindir下创建mount.sshfs符号链接——这正是后面 fstab 能把sshfs当作文件系统类型使用的原因装完即可用无需额外操作。如果你坚持从源码编译可用 Meson Ninja构建命令见 justfilegit clone https://gitcode.com/gh_mirrors/sshfs1/sshfs cd sshfs/build meson .. ninja sudo ninja install⚠️ 自动挂载的前提是免交互认证。systemd 场景下请提前配好 SSH 密钥ssh-keygenssh-copy-id否则开机时无人输密码。方案一systemd fstab 开机自动挂载推荐fstab 是 Linux 挂载的标准入口SSHFS 官方文档明确支持从/etc/fstab挂载见 sshfs.rst 的 Mounting from /etc/fstab 章节。只需加一行# /etc/fstab 末尾添加 user192.168.1.100:/data /mnt/remote sshfs defaults,IdentityFile/root/.ssh/id_ed25519,ServerAliveInterval15,_netdev,x-systemd.automount 0 0几个关键参数的作用参数作用_netdev告诉系统这是网络挂载开机时等网络就绪后再挂x-systemd.automount延迟挂载开机不阻塞首次访问该目录时才真正连接IdentityFile...指定 SSH 私钥路径实现免密ServerAliveInterval15每 15 秒发送心跳防止空闲连接被掐断改完执行sudo systemctl daemon-reload生效重启后即可在/mnt/remote看到远程文件。✅方案二systemd 挂载单元 / 用户级服务如果你不想动 fstab或者希望每个登录用户都自动挂载自己的远程目录可以用 systemd 单元文件。系统级.mount单元/etc/systemd/system/sshfs-remote.mount[Unit] DescriptionSSHFS mount for user192.168.1.100:/data Afternetwork-online.target Wantsnetwork-online.target [Mount] Whatuser192.168.1.100:/data Where/mnt/remote Typesshfs OptionsIdentityFile/root/.ssh/id_ed25519,ServerAliveInterval15,reconnect [Install] WantedBymulti-user.target用户级服务~/.config/systemd/user/sshfs-remote.service随登录启动、注销卸载[Unit] DescriptionSSHFS mount for my remote server [Service] ExecStart/usr/bin/sshfs user192.168.1.100:/data /home/user/mnt/remote -o IdentityFile%h/.ssh/id_ed25519,ServerAliveInterval15,reconnect ExecStop/usr/bin/fusermount3 -u /home/user/mnt/remote Restarton-failure [Install] WantedBydefault.target启用用户级服务记得开 linger让未登录时也保持服务systemctl --user enable --now sshfs-remote sudo loginctl enable-linger $USER-o reconnect是 SSHFS 内置的自动重连选项参数定义位于 sshfs.c配合ServerAliveInterval15网络闪断后能自动恢复连接是生产环境的最佳搭档。方案三pam_mount 登录即挂载、注销即卸载如果你习惯用密码登录、不想为每台机器配置密钥pam_mount 是最顺手的方案登录成功后自动挂载注销时自动卸载全程无感。sudo apt install pam-mount # Debian / Ubuntu编辑/etc/pam_mount.conf.xml添加卷配置luserconf/ mkmountpoint enable1 remove1/ !-- 密码方式pam_mount 会把登录密码经 stdin 传给 sshfs -- volume user* server* path/ path-mounted/mnt/%(SERVERPATH) fstypesshfs optionsport22,ServerAliveInterval15,password_stdin /这里的关键是password_stdin选项——它在 sshfs.rst 中的说明是read password from stdin (only for pam_mount!)是 SSHFS专门为 pam_mount 场景设计的选项pam_mount 登录时把密码通过标准输入交给 sshfs 子进程实现免二次输入密码。 如果使用密钥认证把password_stdin换成IdentityFile~/.ssh/id_ed25519即可。方案对比SSHFS 自动挂载怎么选对比项systemd fstabsystemd 单元/用户服务pam_mount触发时机开机访问时懒挂载开机 / 用户登录登录时挂载、注销时卸载认证方式SSH 密钥SSH 密钥密码password_stdin或密钥断线恢复支持 reconnect支持 reconnect 自动重启进程依赖重登多用户全局共享挂载点可按用户隔离按用户独立挂载推荐场景服务器/固定工作站需要按用户隔离密码认证、临时笔记本✅ 综合推荐长期固定环境首选 systemd fstab 或用户级服务密钥认证最稳密码认证或临时设备选 pam_mount。常见问题速查清单挂载目录卡死不动多为 SSH 空闲连接被断。加-o ServerAliveInterval15配合-o reconnect自动重连官方手册 Caveats 章节给出的标准解法。开机时挂载失败确认加了_netdev或改用x-systemd.automount懒挂载避开网络未就绪的时序问题。其他用户无法访问挂载点在/etc/fuse.conf中开启user_allow_other再给挂载加-o allow_other,default_permissions。开机挂载太慢拖慢启动用-o delay_connect让挂载点首次被访问时才真正建连。排查挂载问题sshfs -d -f前台运行输出调试日志或查看 test/test_sshfs.py 了解官方是如何自动化测试挂载行为的。写在最后掌握本文的三种方案后SSHFS 自动挂载就彻底告别了每次开机手敲命令的烦恼systemd 方案稳健可控、pam_mount 方案即插即用。配合ServerAliveInterval与reconnect两个参数远程目录从此像一个永不掉线的本地磁盘一样安静工作。【免费下载链接】sshfsA network filesystem client to connect to SSH servers项目地址: https://gitcode.com/gh_mirrors/sshfs1/sshfs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表