使用sshfs由对等方重置连接


32

我使用的是保险丝/ sshfs安装架,到目前为止效果良好。现在,我不得不重新安装服务器系统,突然发现经典read: Connection reset by peer错误。我正在使用公共密钥身份验证,并将我的密钥复制到了新安装的系统中。正常的ssh登录可以正常工作。我将日志更改为调试,但是可惜的是这没有给我任何有用的信息:

sshd[2077]: debug1: Forked child 2198.
sshd[2198]: Set /proc/self/oom_score_adj to 0
sshd[2198]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
sshd[2198]: debug1: inetd sockets after dupping: 3, 3
sshd[2198]: Connection from 192.168.1.6 port 47991
sshd[2198]: debug1: Client protocol version 2.0; client software version OpenSSH_6.1p1 Debian-4
sshd[2198]: debug1: match: OpenSSH_6.1p1 Debian-4 pat OpenSSH*
sshd[2198]: debug1: Enabling compatibility mode for protocol 2.0
sshd[2198]: debug1: Local version string SSH-2.0-OpenSSH_6.1p1 Debian-4
sshd[2198]: debug1: permanently_set_uid: 103/65534 [preauth]
sshd[2198]: debug1: list_hostkey_types: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 [preauth]
sshd[2198]: debug1: SSH2_MSG_KEXINIT sent [preauth]
sshd[2198]: debug1: SSH2_MSG_KEXINIT received [preauth]
sshd[2198]: debug1: kex: client->server aes128-ctr hmac-md5 none [preauth]
sshd[2198]: debug1: kex: server->client aes128-ctr hmac-md5 none [preauth]
sshd[2198]: debug1: expecting SSH2_MSG_KEX_ECDH_INIT [preauth]
sshd[2198]: debug1: SSH2_MSG_NEWKEYS sent [preauth]
sshd[2198]: debug1: expecting SSH2_MSG_NEWKEYS [preauth]
sshd[2198]: Connection closed by 192.168.1.6 [preauth]
sshd[2198]: debug1: do_cleanup [preauth]
sshd[2198]: debug1: monitor_read_log: child log fd closed
sshd[2198]: debug1: do_cleanup
sshd[2198]: debug1: Killing privsep child 2199

有人知道我在这里缺少什么吗?

更新

auth.log与调试级3:

sshd[2455]: debug3: fd 5 is not O_NONBLOCK
sshd[2455]: debug1: Forked child 2456.
sshd[2455]: debug3: send_rexec_state: entering fd = 8 config len 751
sshd[2455]: debug3: ssh_msg_send: type 0
sshd[2455]: debug3: send_rexec_state: done
sshd[2456]: debug3: oom_adjust_restore
sshd[2456]: Set /proc/self/oom_score_adj to 0
sshd[2456]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
sshd[2456]: debug1: inetd sockets after dupping: 3, 3
sshd[2456]: Connection from 192.168.1.6 port 50037
sshd[2456]: debug1: Client protocol version 2.0; client software version OpenSSH_6.1p1 Debian-4
sshd[2456]: debug1: match: OpenSSH_6.1p1 Debian-4 pat OpenSSH*
sshd[2456]: debug1: Enabling compatibility mode for protocol 2.0
sshd[2456]: debug1: Local version string SSH-2.0-OpenSSH_6.1p1 Debian-4
sshd[2456]: debug2: fd 3 setting O_NONBLOCK
sshd[2456]: debug2: Network child is on pid 2457
sshd[2456]: debug3: preauth child monitor started
sshd[2456]: debug3: privsep user:group 103:65534 [preauth]
sshd[2456]: debug1: permanently_set_uid: 103/65534 [preauth]
sshd[2456]: debug1: list_hostkey_types: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 [preauth]
sshd[2456]: debug1: SSH2_MSG_KEXINIT sent [preauth]
sshd[2456]: debug1: SSH2_MSG_KEXINIT received [preauth]
sshd[2456]: debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se [preauth]
sshd[2456]: debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se [preauth]
sshd[2456]: debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: none,zlib@openssh.com [preauth]
sshd[2456]: debug2: kex_parse_kexinit: none,zlib@openssh.com [preauth]
sshd[2456]: debug2: kex_parse_kexinit:  [preauth]
sshd[2456]: debug2: kex_parse_kexinit:  [preauth]
sshd[2456]: debug2: kex_parse_kexinit: first_kex_follows 0  [preauth]
sshd[2456]: debug2: kex_parse_kexinit: reserved 0  [preauth]
sshd[2456]: debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss [preauth]
sshd[2456]: debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se [preauth]
sshd[2456]: debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se [preauth]
sshd[2456]: debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 [preauth]
sshd[2456]: debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib [preauth]
sshd[2456]: debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib [preauth]
sshd[2456]: debug2: kex_parse_kexinit:  [preauth]
sshd[2456]: debug2: kex_parse_kexinit:  [preauth]
sshd[2456]: debug2: kex_parse_kexinit: first_kex_follows 0  [preauth]
sshd[2456]: debug2: kex_parse_kexinit: reserved 0  [preauth]
sshd[2456]: debug2: mac_setup: found hmac-md5 [preauth]
sshd[2456]: debug1: kex: client->server aes128-ctr hmac-md5 none [preauth]
sshd[2456]: debug2: mac_setup: found hmac-md5 [preauth]
sshd[2456]: debug1: kex: server->client aes128-ctr hmac-md5 none [preauth]
sshd[2456]: debug1: expecting SSH2_MSG_KEX_ECDH_INIT [preauth]
sshd[2456]: debug3: mm_key_sign entering [preauth]
sshd[2456]: debug3: mm_request_send entering: type 5 [preauth]
sshd[2456]: debug3: mm_key_sign: waiting for MONITOR_ANS_SIGN [preauth]
sshd[2456]: debug3: mm_request_receive_expect entering: type 6 [preauth]
sshd[2456]: debug3: mm_request_receive entering [preauth]
sshd[2456]: debug3: mm_request_receive entering
sshd[2456]: debug3: monitor_read: checking request 5
sshd[2456]: debug3: mm_answer_sign
sshd[2456]: debug3: mm_answer_sign: signature 0x7f9b687c7680(100)
sshd[2456]: debug3: mm_request_send entering: type 6
sshd[2456]: debug2: monitor_read: 5 used once, disabling now
sshd[2456]: debug2: kex_derive_keys [preauth]
sshd[2456]: debug2: set_newkeys: mode 1 [preauth]
sshd[2456]: debug1: SSH2_MSG_NEWKEYS sent [preauth]
sshd[2456]: debug1: expecting SSH2_MSG_NEWKEYS [preauth]
sshd[2456]: Connection closed by 192.168.1.6 [preauth]
sshd[2456]: debug1: do_cleanup [preauth]
sshd[2456]: debug3: PAM: sshpam_thread_cleanup entering [preauth]
sshd[2456]: debug1: monitor_read_log: child log fd closed
sshd[2456]: debug3: mm_request_receive entering
sshd[2456]: debug1: do_cleanup
sshd[2456]: debug3: PAM: sshpam_thread_cleanup entering
sshd[2456]: debug1: Killing privsep child 2457

更新

我尝试了手动sshfs安装,我也得到了read: Connection reset by peer。然后,我添加了调试选项,并且得到了Permission denied (publickey).。这很奇怪,因为公共密钥已经到位,否则可以正常工作。我还将我的用户用于ssh连接,并手动指定私钥文件。可能是root帐户无法访问某处服务器上正确的公共密钥的问题?我正在执行

sudo sshfs myuser@myserver:/mnt/foo /mnt/foo -o IdentityFile=/home/myuser/.ssh/id_rsa

而相关的日志部分是

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/myuser/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
read: Connection reset by peer

1
输出看起来与ssh会话中的输出完全一样,由于服务器密钥指纹不匹配(或未知密钥)而导致ssh会话拒绝连接。是否sftp正确服务器的工作?
彼得

我尝试同时使用Nautilus(Connect to Server...选项)和Filezilla进行sftp。工作正常。尽管Filezilla向我询问了未知的主机密钥。
安德烈Stannek

sftp直接尝试-这就是SSHFS所使用的。
彼得2013年

4
对我来说看起来一样。您是否尝试从客户端获取一些调试信息?sshfs -odebug,sshfs_debug,loglevel=debug ...可以做到这一点(摘自sourceforge.net/apps/mediawiki/fuse/index.php?title=SshfsFaq)。
彼得

1
@peterph已经有了这个主意;-)参见我的第二次更新。我只是在这里发布的命令中省略了调试参数,但是我用它们执行了调试参数。
安德烈Stannek

Answers:


21

我正在使用该-F /path/to/config选项。答案在我的配置文件中

IdentityFile ~/.ssh/id_rsa

这没有用。绝对路径是必需的:

IdentityFile /home/user/.ssh/id_rsa

man ssh-config明确允许波浪号IdentityFile
CharlesB '18

4
@CharlesB我已经对这两种方法进行了测试,并且向您保证我的答案是有效的。我确实在手册页中看到了您所引用的内容。使用sudo运行时可能是一个错误?(因为我是)
Sanchke Dellowar,2018年

7
当然,如果您使用sudo运行sshfs,则tilde是根用户的家。那么您需要指定绝对路径。
CharlesB

1
即使您在~/.ssh/config文件中使用绝对路径,sudo sshfs默认情况下,运行也会读取根/root/.ssh/config文件(如果有)。您需要通过将显式路径传递到配置文件-F
Dan Dascalescu

14

经过大量尝试后,结果发现我的客户用户不在fuse组中。在我添加它之后sudo usermod -a -G fuse myuser,安装再次正常。在重新安装服务器之前,不要问我它如何工作。感谢您的所有帮助!


2
是本地文件系统还是远程文件系统上的用户?
Woodrow Barlow

1
@WoodrowBarlow说实话我不知道了:D我最好的猜测是本地的,因为这是您使用保险丝的地方。
安德烈Stannek

gpasswd --add USER fuse
减速

就我而言,我只需要端口号。该-p选项已添加。
悖论

11

由于此错误消息是ssh连接失败时的默认错误消息,因此最通用的答案(每个@peterph注释)至少要使用以下命令进行调查-odebug

sshfs -odebug,sshfs_debug,loglevel=debug ...

例如

sshfs -odebug,sshfs_debug,loglevel=debug -o Ciphers=arcfour -o Compression=no -o allow_root -o transform_symlinks localhost:/ /mnt/your_mount_point

正如其他地方说,常见的原因包括缺少allow_otherfuse.conf或缺少fuse组成员(虽然可能不再需要在Ubuntu 18.04?)

在我的情况下,此打印:

SSHFS version 2.8 FUSE library version: 2.9.7 nullpath_ok: 0 nopath: 0 utime_omit_ok: 0 executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-ologlevel=debug> <-oIdentityFile=~/.ssh/id_rsa> <-oCiphers=arcfour> <-oCompression=no> <-2> <localhost> <-s> <sftp> command-line line 0: Bad SSH2 cipher spec 'arcfour'. read: Connection reset by peer

...指向不支持的密码选项(在fedora上工作,但不在ubuntu上工作)


使用-o debug,我得到了命令行第0行:错误的SSH2密码规范'arcfour'。
SalathielGenèse18年

8

我今天有同样的问题。 ssh连接还可以,sshfs不是。我的SSH服务器是Qnap NAS(TS-228)。

通过在NAS设备上启用S​​FTP解决了该问题。

其他设置出现在sshd_config

Subsystem sftp /usr/libexec/sftp-server

1
该解决方案对我不起作用。因此,我很乐意尝试其他方法。
痴呆的刺猬

在Synology NAS上启用SFTP也会为我解决该错误。但是,已安装文件夹中显示的内容与通过ssh直接连接时的内容不同。文件夹丢失,无法访问根目录。笨蛋
Heinrich Ulbricht

5

我发现类似的问题与保险丝配置文件有关:

/etc/fuse.conf

我不得不取消评论:

user_allow_other

5

以防万一有人偶然发现了这个线程:read: Connection reset by peer因为主机名不可解析(我没有使用标准主机),所以出现了此错误。使用正确的主机名解决了该问题-然后错误消息完全被误导了。

一个好的测试是在运行sshfs命令之前先将其SSH到计算机,如果该命令甚至无法正常工作,则sshfs也将不起作用。


sshfs server-ssh-alias:/ some / dir / mnt对我不起作用,但是sshfs real.servername.org:/some/dir / mnt对我有用。(与user_allow_other结合使用)
Brian C.

2

我收到此错误,并尝试了上述方法,但未能使其正常工作。

问题是服务器未在端口22接受ssh。我使用了:

$sshfs -p 2222 user@server:/path/to/folder ~/local/path

它解决了这个问题。


1
请不要拒绝投票,而不要说为什么。这是一个合理的检查。
痴呆的刺猬

2

我的错误是服务器端。sshd的sftp子系统显然默认为在较新的centos 7.6.xx上不可用。通过在/ etc / ssh / sshd_config中的以下内容前面删除“#”来解决

Subsystem sftp /usr/libexec/openssh/sftp-server

感谢eddygeek提供的-odebug配方来帮助发现此问题。与上面的GEOM相同,但不特定于Qnap。


2

运行时遇到相同的错误sudo sshfs [...] myhost: /mnt/myhostmyhost在我的~/.ssh/config文件中定义了。

问题是运行sudo sshfs不在我的主目录中查找~/.ssh/config,而是在roots中查找。解决方案是通过以下方式显式传递配置文件-F

sudo sshfs -F /home/dandv/.ssh/config [...] myhost: /mnt/myhost

1

我从/home/user/.ssh/known_hosts删除了主机的指纹(实际上删除了整个文件),并对其进行了修复...因为指纹已更改。使用ssh连接到主机可以明确说明其未连接的原因。


1

对于那些正在寻找一个非常简单的解决方案的人:在调试模式下运行sshfs之后,我发现我的连接断开了。

使用开关打开详细模式:

-o debug

1

我有一个类似的问题,当我检查网络配置时,系统有些丢失了网关地址。所以我跑了下面的命令

路由添加默认gw 192.169.0.254

,然后重新启动系统。

重新启动后问题已解决。


2
您的网关错误,导致“对等连接重置”?!
杰夫·谢勒

1

就我而言,这是服务器接口在长时间启动后没有启动。服务器通过中继模式连接到Cisco交换机端口。由于任何中继端口在实际变为UP(通常超过30秒)之前都会进行各种检查,因此导致出现上述连接重置错误消息。

我的解决方案是使用将交换机端口更改为访问模式spanning-tree portfast,因为在我的环境中,此服务器不需要中继模式。

我还使用sshfs的debug参数找到了有关此问题的信息。

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.