我可以通过SSH登录到远程主机,但使用SSHFS时却出现了“连接重置”,我错过了什么吗?

我创建了一个密钥对,用于从12.04连接到Synology磁盘。部署后,编辑~/.ssh/config文件以自动使用该密钥对。已进行测试:
ssh user@remotesynology
- >工作得很好。在第二台远程机器上进行了测试(运行Ubuntu服务器)- >工作正常。 现在已经测试过:
sshfs user@theubuntuserver: /home/user/ubuntuserver

-> 工作

最后:

sshfs user@remotesynology: /home/user/remotesynology
错误:
read: Connection reset by peer

我查看了这个问题,但似乎不适用(我在fuse组中有用户,并且它对其他机器也有效),我没有遇到权限被拒绝的错误。

我错过了什么?


你有看过《https://wiki.archlinux.org/index.php/Sshfs》吗?它列出了一些用于调试和解决问题的简要清单。例如:服务器的sshd_config文件中是否启用了SFTP功能。 - Ralph Rönnquist
连接被对等方重置 可能由任何网络连接丢失触发。事实上,我最喜欢的错误是由我当时的ISP提供的路由器引起的 - 它将非活动的TCP连接限制为60秒,并终止它们。您可以尝试正常的SSH连接,看看在5分钟的不活动后是否会重置连接或终端冻结?如果是这种情况,我可以为您提供一种使用保持活动功能的解决方法。 - Laice
4个回答

在我的情况下(我也尝试连接到远程Synology!),问题是服务器端未启用SFTP。症状是相同的:我可以无问题地通过ssh连接到服务器,但是sshfs命令失败。 要在Synology服务器上启用SFTP,请转到控制面板->文件服务->FTP选项卡->SFTP部分。

我以前遇到过sshfs表现奇怪的问题。在安装sshfs后,你真正应该做的第一件事是重新启动你的机器,或者至少重启X,一旦你已经把自己添加到组中。

这个错误通常是当用户不在组中时发生的(点击此处查看), 或者如果中的allow_other未启用时发生的(点击此处查看)

有时我的ssh密钥会导致问题。即使ssh已为其配置好了(~/.ssh/config),我也必须明确告诉sshfs要使用哪个密钥文件。

  • sshfs -oIdentityFile=/full/path/to/id_rsa user@machine

另一个解决方案是使用你的/etc/fstab并在这里添加一个新条目:

sshfs#USER@MACHINE:/remote/path/ /mnt/local/path/      fuse    user,_netdev,auto_cache,reconnect,uid=1000,gid=1000,IdentityFile=/full/path/to/.ssh/id_rsa,idmap=user,allow_other    0       2
这告诉您的机器将/remote/path挂载到/mnt/local/path。它表示这个挂载将是一个fuse文件系统。还有一些其他设置,允许在网络可用时进行挂载,如果断开连接可以自动重新连接等等。 idmap和allow_other部分允许fuse组中的用户挂载文件系统。它还将帮助映射权限以匹配指定的用户和组。 在这个例子中,您可以运行以下命令来挂载文件系统:
  • mount /mnt/local/path/
  • ls /mnt/local/path/

在我的情况下,我已经检查了上述所有要点,用户位于fuse组中,allow_other设置正确,/etc/fuse.conf的权限正确,我使用了allow_other和idmap选项,但是当服务器允许我进行ssh但不允许我进行sshfs时,我无法进行sshfs操作,而调试模式显示“找不到匹配的加密方法:客户端arfcour服务器aes128-ctr,aes192-ctr......”。 - Alex

如果您在服务器上设置了iptables防火墙规则,并且在调试sshfs时可能会被锁定,这也会导致“连接被对等方重置”。

我刚遇到了同样的问题。原因是服务器上未启用SFTP子系统(SSHFS正在使用它)。解决方法是在服务器的/etc/ssh/sshd_config文件中添加以下行:
Subsystem sftp /usr/lib/openssh/sftp-server

为什么被投票反对?在禁用SFTP后,我也遇到了同样的错误,所以我不认为问题出在问题的前半部分。推荐的修复方法有问题吗?它是否无法工作或存在安全问题? - Philipp Claßen
我在更改为 Subsystem sftp /usr/lib/ssh/sftp-server 后,一切开始正常工作。 - Rostyslav Malenko