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
- 检查VM2上私钥文件的权限:必须是
第二步:修正/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
相关产品推荐
相关产品推荐

