带有fstab的sshfs:对等重置连接


10

我试图允许我的笔记本电脑(Ubuntu 13.04)通过SSHFS访问我的PC(Lubuntu 13.04)硬盘。我正在使用RSA密钥进行连接。

如果我在终端中输入以下内容,它会很好地工作:

sshfs my-PC:/a_folder /media/a_folder

但是我希望在启动笔记本电脑时自动安装它。因此,我将自己添加到保险丝组中:

sudo adduser mynickname fuse

我在fstab文件中添加了以下行:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev 0 0

当我启动笔记本电脑时,a_folder出现在设备列表中,但未安装。当我尝试通过Nautilus访问它时,它显示以下错误:

mount: only root can mount sshfs#mynickname@my-PC:/a_folder on /media/a_folder

如果我尝试也遇到相同的错误

mount /media/a_folder

在一个终端。

如果我尝试

sudo mount /media/a_folder

我懂了

read: Connection reset by peer

我尝试在fstab条目中添加“ allow_other”作为选项,并取消对/etc/fuse.conf中的相关行的注释,但是它没有任何改变。

用户“ mynickname”是文件夹/ media / a_folder的所有者,并具有rwx权限。

我在互联网上查看了许多有关问题非常相似的人的话题,但到目前为止没有任何结果。通常人们甚至做不到

sshfs my-PC:/a_folder /media/a_folder

不会出现错误,但是在我的笔记本电脑上可以正常工作。

任何见解和提示将不胜感激!谢谢。

编辑:我不久前解决了这个问题,但是我忘了更新这篇文章。所以这是我的fstab中的内容:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse noauto,_netdev,idmap=user,user,default_permissions 0 0

我记得要添加的关键选项是default_permissions。我必须将mynickname添加到my-PC上属于/ a_folder /的组。

fstab  sshfs 

Answers:


8

您遇到的问题是普通用户为身份文件设置了正确的设置,而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

感谢您的回答。我已经尝试过使用IdentityFile选项,但是没有指定uid和gid选项,所以我会尝试!

从技术上讲,sudo如果为FUSE安装正确设置了所有内容,则无需使用。同样,uid / gid设置应仅影响哪个用户对系统上文件的权限。
EarthmeLon 2013年

所以我只是同时尝试了uid,gid,IdentityFile,allow_other,所有这些选项,但不幸的是,它仍然无法正常工作。还是一样的错误。

您介意发布有关如何编写的示例吗?您应该指的是私钥,而不是公钥。
EarthmeLon 2013年

1
因此,这两种方法均无效。还是一样的错误。对于配置文件,我尝试通过指定正确的主机:用户,主机名(尝试IP和名称),标识文件。但是,效果也不佳。因此,我现在要做的是在启动应用程序中添加了命令sshfs my-PC:/ a_folder / media / a_folder。它不像使用fstab那样干净,但目前效果很好。感谢您的帮助和建议!如果您有其他想法,请随时分享,我们将不胜感激!

4

为了获得真实的调试输出,您需要在安装中同时添加sshfs_debugdebug选项:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev,debug,sshfs_debug 0 0

有了这个,您将获得很多调试信息来帮助您:

$ 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

就我而言,我发现我的机器仅列在中.ssh/config,因此对于root用户而言无法解析。

顺便说一句,您需要设置uid和gid,因为这idmap=user似乎仅对当前用户有效,在这种情况下,该用户是root用户。


3

ssh的主机密钥更改时,也会发生此问题。

尝试通过ssh连接到服务器(例如ssh username@hostIP)。如果出现以下错误:

 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!    @
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

请按照错误消息中的说明删除旧密钥,然后尝试通过ssh重新连接。如果错误不再出现,则sshfs连接应该正常工作。


“尝试通过ssh连接到服务器” 如果要以root身份挂载目录,请确保以root身份执行此操作(这是自动挂载时发生的情况)。用户的known_hosts文件可以与root的known_hosts文件不同。
Shelvacu '16

0

全面披露:老派极客,但在Linux /开源世界中却崭新

首先,我仍在使用密码身份验证,因为我对RSA密钥还不够了解。不过,这已经接近列表的顶部。

相关设置信息:使用装有VMWare Fusion的MacBook Pro,我在其上安装了Ubuntu服务器10.04 LTS。几乎所有服务器交互都依靠Mac的终端和SSH

在对Drupal安装进行破坏之后,我回滚到先前的快照,并突然无法执行我刚才使用的命令: sshfs -o idmap=user -o allow_other user@mac.home:/Users/<username>/Documents ~/mountpoint

问题是密钥不同步。我不知道我是否确实需要在主机和服务器上都执行此操作,但是我首先通过备份known_hosts文件,然后编辑known_hosts文件以删除条目来清除每个本地密钥。 。
在Mac上,此文件位于:/Users/<username>/.ssh/known_hosts
在Ubuntu上,该文件位于:/home/<username>/.ssh/known_hosts

因此,总而言之,所有这些都是在启动Ubuntu服务器后从Mac终端执行的:

cp /Users/<username>/.ssh/known_hosts /Users/<username>/.ssh/known_hosts.old
nano  /Users/<username>/.ssh/known_hosts
  # remove extra entries, save file
ssh <username>@ubuntu_server
cp /home/<username>/.ssh/known_hosts, /home/<username>/.ssh/known_hosts.old
nano /home/<username>/.ssh/known_hosts
  # remove extra entries, save file

首次在每个系统中使用SSH时,SSH提示我允许添加RSA密钥,此后所有工作都可以进行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.