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

CentOS(VirtualBox)开机挂载共享目录问题求助

解决CentOS虚拟机SSHFS挂载需输入密码及重启后挂载问题

看起来你遇到的是SSHFS挂载时密钥认证不生效的典型问题,我来一步步帮你排查和解决:

第一步:先确认SSH密钥认证本身是否正常运行

密钥认证是SSHFS免密挂载的基础,先脱离fstab单独测试:

  • 在VM2上,用执行挂载操作的用户(比如root或者普通用户)执行:
    ssh -i /绝对路径/到你的私钥文件 vm1的用户名@vm1的IP地址
    
    如果这一步仍然提示输入密码,那问题出在密钥配置本身,先解决这个:
    • 检查VM2上私钥文件的权限:必须是600(执行chmod 600 /path/to/private_key),所在的.ssh目录权限是700
    • 检查VM1上对应用户的~/.ssh/authorized_keys文件:确保已经添加了VM2的公钥内容,且该文件权限是600,.ssh目录权限是700
    • 查看VM1的/etc/ssh/sshd_config,确认PubkeyAuthentication设置为yes,如果修改过配置,记得重启sshd服务:systemctl restart sshd

第二步:修正/etc/fstab里的挂载配置

如果SSH直接登录已经免密,那大概率是fstab的配置有问题,正确的SSHFS fstab格式应该类似这样:

vm1用户名@vm1IP:/vm1上的目标目录 /vm2上的挂载点 fuse.sshfs IdentityFile=/绝对路径/到私钥文件 defaults,_netdev,allow_other 0 0

这里要注意几个关键细节:

  • 必须用绝对路径:fstab里无法解析~,所以IdentityFile一定要写全路径,比如/home/youruser/.ssh/id_rsa,而不是~/.ssh/id_rsa
  • 添加_netdev选项:这个选项告诉系统这是网络挂载,要等网络服务启动完成后再尝试挂载,避免重启时因为网络未就绪导致挂载失败
  • allow_other选项:如果需要让其他用户也能访问挂载的目录,需要加这个选项,同时要在VM2的/etc/fuse.conf里取消注释user_allow_other这一行,然后重启系统或者重新加载fuse模块

第三步:测试fstab配置并验证重启效果

  • 先卸载已挂载的目录:
    umount /vm2上的挂载点
    
  • 执行挂载命令测试fstab配置:
    mount /vm2上的挂载点
    
    如果这一步不需要密码就能成功,那配置没问题了
  • 最后重启VM2,检查挂载点是否自动挂载成功:
    df -h | grep /vm2上的挂载点
    
    如果没挂载,查看系统日志找原因:
    journalctl -xe | grep sshfs
    

额外排查点

如果还是有问题,可能是SELinux的限制,你可以临时关闭SELinux测试:

setenforce 0

如果关闭后能正常挂载,就需要给挂载点添加SELinux上下文:

semanage fcontext -a -t sshfs_t '/vm2上的挂载点(/.*)?'
restorecon -Rv /vm2上的挂载点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:22:57