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

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

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

如果我在终端中输入以下内容,它可以正常工作:

sshfs my-PC:/a_folder /media/a_folder

但我希望它在启动笔记本电脑时自动安装。所以我将自己添加到了 fuse 组:

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 添加到我的 PC 上 /a_folder/ 所属的组中。

答案1

您遇到的问题是,您的普通用户已正确设置您的身份文件,而根用户不知道要使用什么 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

答案2

为了获得真正的调试输出,您需要将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: [email protected] <1>
Extension: [email protected] <2>
Extension: [email protected] <2>
Extension: [email protected] <1>
Extension: [email protected] <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 连接应该可以正常工作。

答案4

坦白说:老派极客,但对 Linux/开源世界来说却是新手

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

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

在 Drupal 安装失败后,我回滚到之前的快照,突然无法执行刚刚使用过的命令:sshfs -o idmap=user -o allow_other [email protected]:/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 密钥,之后一切正常。

相关内容