You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arch系统下非root用户登录/按需挂载SSHFS共享并注销卸载的方法

刚好我之前在Arch上折腾过一模一样的需求,完全用官方维护的核心/extra/community仓库工具就能搞定,不用碰AUR的玩意儿,给你一步步拆解清楚:

前提准备

首先得把需要的工具装到位,都是官方仓库里的:

  • 安装fuse-sshfs(属于community仓库,官方维护)和fuse3:
    sudo pacman -S fuse-sshfs fuse3
    
  • 把你的普通用户加入fuse组,不然可能没权限挂载:
    sudo gpasswd -a $USER fuse
    
    执行完之后注销再重新登录,组权限才会生效。

1. 按需挂载(手动触发)

如果不想每次登录都自动挂载,只想用的时候手动启动,可以这么搞:

  • 先创建挂载目录(路径随便改,比如~/remote-files也行):
    mkdir -p ~/mnt/sshshare
    
  • 直接用sshfs命令挂载,普通用户权限就能执行:
    sshfs your-remote-user@remote-host:/path/to/remote/share ~/mnt/sshshare
    
  • 卸载的话用fusermount3:
    fusermount3 -u ~/mnt/sshshare
    
  • 嫌手动敲命令麻烦?写个简单的切换脚本就行,比如创建~/scripts/mount-sshshare.sh:
    #!/bin/bash
    MOUNT_POINT="$HOME/mnt/sshshare"
    REMOTE_TARGET="your-remote-user@remote-host:/path/to/remote/share"
    
    # 确保挂载点存在
    if [ ! -d "$MOUNT_POINT" ]; then
        mkdir -p "$MOUNT_POINT"
    fi
    
    # 判断当前状态,挂载/卸载切换
    if ! mountpoint -q "$MOUNT_POINT"; then
        sshfs "$REMOTE_TARGET" "$MOUNT_POINT"
        echo "✅ SSHFS 共享已挂载"
    else
        fusermount3 -u "$MOUNT_POINT"
        echo "❌ SSHFS 共享已卸载"
    fi
    
    给脚本加执行权限:
    chmod +x ~/scripts/mount-sshshare.sh
    
    以后直接运行~/scripts/mount-sshshare.sh就能一键切换挂载状态,还能看到提示。

2. 登录自动挂载 + 注销自动卸载(推荐)

用systemd用户服务可以完美实现“登录就挂、注销就卸”,全程不用root权限,完全符合你的需求:

  • 先创建挂载点(和上面一样,路径自己定):
    mkdir -p ~/mnt/sshshare
    
  • 创建systemd用户服务文件:~/.config/systemd/user/sshfs-share.service,把下面内容粘进去,记得替换远程用户、主机和共享路径:
    [Unit]
    Description=自动挂载SSHFS远程共享
    Requires=network.target
    After=network.target
    # 确保网络就绪再挂载,避免因网络未通导致挂载失败
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    # 挂载命令,%h会自动替换成你的用户主目录
    ExecStart=/usr/bin/sshfs your-remote-user@remote-host:/path/to/remote/share %h/mnt/sshshare
    # 注销时自动执行卸载命令
    ExecStop=/usr/bin/fusermount3 -u %h/mnt/sshshare
    # 挂载失败也不重试,避免反复弹密码框
    Restart=no
    
    [Install]
    # 绑定到用户登录的默认目标,登录时启动
    WantedBy=default.target
    
  • 启用并启动这个服务:
    # 启用服务,下次登录自动生效
    systemctl --user enable sshfs-share.service
    # 现在立即启动服务,不用等下次登录
    systemctl --user start sshfs-share.service
    
  • 🔑 重要优化:免密码登录
    要是每次挂载都要输远程主机的密码太麻烦,配置SSH密钥对就行:
    1. 生成密钥(一路回车,不用设密码):
      ssh-keygen -t ed25519
      
    2. 把公钥传到远程主机:
      ssh-copy-id your-remote-user@remote-host
      
    这样以后挂载就不用输密码了,全程自动完成。

小技巧:检查挂载状态

想看看共享是不是真的挂载上了,可以用:

mount | grep sshfs

或者直接看挂载点里的文件,能看到远程内容就说明成功了。

内容的提问来源于stack exchange,提问作者MountainX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:45:14