我正在尝试允许我的笔记本电脑(Ubuntu 13.04)通过 SSHFS 访问我的 PC(Lubuntu 13.04)硬盘。我正在使用 RSA 密钥进行连接。
如果我在终端中输入它,它工作得很好:
sshfs my-PC:/a_folder /media/a_folder
Run Code Online (Sandbox Code Playgroud)
但是我希望它在我启动笔记本电脑时自动安装。所以我把自己加入了保险丝组:
sudo adduser mynickname fuse
Run Code Online (Sandbox Code Playgroud)
我将以下行添加到我的 fstab 文件中:
sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev 0 0
Run Code Online (Sandbox Code Playgroud)
当我启动笔记本电脑时,a_folder 出现在设备列表中,但未安装。当我尝试通过 Nautilus 访问它时,它显示以下错误:
mount: only root can mount sshfs#mynickname@my-PC:/a_folder on /media/a_folder
Run Code Online (Sandbox Code Playgroud)
如果我尝试,我会得到同样的错误
mount /media/a_folder
Run Code Online (Sandbox Code Playgroud)
在一个终端。
如果我尝试
sudo mount /media/a_folder
Run Code Online (Sandbox Code Playgroud)
我得到
read: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
我尝试在 fstab 条目中添加“allow_other”作为选项,并在 /etc/fuse.conf 中取消注释相关行,但它没有改变任何内容。
用户“mynickname”是文件夹 /media/a_folder 的所有者,并具有 rwx 权限。
我在互联网上查看了许多关于有类似问题的人的帖子,但到目前为止没有任何效果。通常,人们甚至做不到
sshfs my-PC:/a_folder /media/a_folder
Run Code Online (Sandbox Code Playgroud)
没有出现错误,而这在我的笔记本电脑上运行良好。
任何见解和提示将不胜感激!谢谢。
编辑:我不久前解决了这个问题,但我忘了更新这篇文章。所以这是我的 fstab 中的内容:
sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse noauto,_netdev,idmap=user,user,default_permissions 0 0
Run Code Online (Sandbox Code Playgroud)
如果我记得的话,要添加的关键选项是 default_permissions。我必须将 mynickname 添加到我的 PC 上属于 /a_folder/ 的组中。
您遇到的问题是您的普通用户对您的身份文件进行了正确设置,而 root 用户不知道要使用什么 ssh 密钥。
您可以通过告诉 fstab 在尝试连接时使用什么身份文件/ssh 密钥来解决此问题:
sshfs#user@host:/mnt/whatever/ /mnt/whatever/ fuse user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/USER/.ssh/KEYFILE,idmap=user,allow_other 0 2
Run Code Online (Sandbox Code Playgroud)
小智 5
要获得真正的调试输出,您需要将sshfs_debug
和debug
选项添加到挂载:
sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev,debug,sshfs_debug 0 0
Run Code Online (Sandbox Code Playgroud)
有了这个,您将获得大量调试信息来帮助您:
$ sudo mount -a
SSHFS version 2.5
FUSE library version: 2.9.2
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-2> <user@box> <-s> <sftp>
user@box's password:
Server version: 3
Extension: posix-rename@openssh.com <1>
Extension: statvfs@openssh.com <2>
Extension: fstatvfs@openssh.com <2>
Extension: hardlink@openssh.com <1>
Extension: fsync@openssh.com <1>
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.22
flags=0x0000f7fb
max_readahead=0x00020000
remote_uid = 1001
INIT: 7.19
flags=0x00000011
max_readahead=0x00020000
max_write=0x00020000
max_background=0
congestion_threshold=0
unique: 1, success, outsize: 40
unique: 2, opcode: STATFS (17), nodeid: 1, insize: 40, pid: 2771
unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 3371
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我发现我的机器只列在 中.ssh/config
,所以 root 无法解析。
顺便说一句,您需要设置 uid 和 gid,因为idmap=user
似乎只适用于当前用户,在这种情况下是 root。
归档时间: |
|
查看次数: |
22396 次 |
最近记录: |