sshfs giving "remote host has disconnected"

38,720

Solution 1

Your Subsystem value in sshd_config is wrong.

It should be Subsystem sftp /usr/lib/openssh/sftp-server or internal-sftp. Try to modify the /etc/ssh/sshd_config to this value, restart the ssh service ans try once more.

Solution 2

Old question, but the first one that comes up for this problem.

My issue was the server required key authentication, but I was running the command using sudo and specifying -o IdentityFile=~/.ssh/id_rsa, meaning ~ was expanded to root's home, not mine.

Specifying the full path worked, and I imagine using $HOME would have too (because it would have expanded earlier).

Solution 3

You'll get this error if the remote server is running Dropbear rather than OpenSSH.

SSHFS uses SFTP, and Dropbear doesn't provide SFTP. So when you try to use it, the Dropbear server sees a request for a subsystem that it doesn't understand and drops the connection.

From here: https://unix.stackexchange.com/questions/363540/mount-a-filesystem-using-sshfs-using-the-dropbear-server-on-yocto-firmware

Solution 4

I am not sure if it helps, but I had similar problem

remote host has disconnected

and after some googling&browsing I realised, that actually I connected ssh via different port.

So, for example, I had to connect via ssh (example, assuming port number 1234):

ssh [email protected] -p 1234

instead of standard ssh when port number is 22. So the same had to be used for sshfs connection:

sshfs [email protected]:/ ~/testfolder -p 1234

It solved my problem.

Solution 5

One more cause that happened to me was that the dropbearmulti binary itself lacked the string /usr/libexec/sftp-server which got lost somewhere around build 33600 of DD-WRT. Check if said binary mentions this file or it won't work even if it's present. I had to use a binary from build 33525 and make a launcher that kills the normal buggy dropbear, then runs this one. You create a symlink called dropbear pointing to dropbearmulti. You stop the current one with stopservice sshd, then run the working one. See in ps what the proper parameters look like. It's best to have it on jffs (or unpack it to /tmp) so that you could still umount any drive.

Share:
38,720

Related videos on Youtube

Slava Knyazev
Author by

Slava Knyazev

Updated on September 18, 2022

Comments

  • Slava Knyazev
    Slava Knyazev over 1 year

    I am trying to mount an sftp connection into a folder using sshfs with the following command which throws an error.

    ~$ sshfs [email protected]:/ testfo
    remote host has disconnected
    

    The same error happens if I SSH into the system and repeat the command by with localhost. This command also worked with another machine so therefore the issue is somewhere on the server.

    ~$ cat /var/log/auth.log
    
    [...]
    
    May 24 22:49:43 example sshd[20095]: Accepted publickey for admin from 24.111.222.33 port 47086 ssh2: RSA ad:xx:6e:xx:14:xx:bd:b5:xx:cb:66:xx:xx:xx:a3:ac
    May 24 22:49:43 example sshd[20095]: pam_unix(sshd:session): session opened for user admin by (uid=0)
    May 24 22:49:43 example systemd-logind[812]: Removed session 60.
    May 24 22:49:43 example systemd-logind[812]: New session 61 of user admin.
    May 24 22:49:44 example sshd[20143]: Received disconnect from 24.203.164.45: 11: disconnected by admin
    May 24 22:49:44 example sshd[20095]: pam_unix(sshd:session): session closed for user admin
    

    The ~/.ssh directory is owned by admin since I saw that as a debugging attempt for a similar issue.

    Additional information for future reference:

    The issue is not with SSH itself, but with SFTP. This is manifested by the fact that SSH connections work correctly but SFTP always fails. Attempting to SFTP results in Received unexpected end-of-file from SFTP server

    The issue is not related to login scripts outputted strings (e.g. ~/.bashrc).

    The issue is present from all users (including root).

    Here is my sshd configuration (/etc/ssh/sshd_config):

    # Package generated configuration file
    # See the sshd_config(5) manpage for details
    
    # What ports, IPs and protocols we listen for
    Port 22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    HostKey /etc/ssh/ssh_host_ed25519_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    
    # Lifetime and size of ephemeral version 1 server key
    KeyRegenerationInterval 3600
    ServerKeyBits 1024
    
    # Logging
    SyslogFacility AUTH
    LogLevel INFO
    
    # Authentication:
    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes
    
    RSAAuthentication yes
    PubkeyAuthentication yes
    #AuthorizedKeysFile %h/.ssh/authorized_keys
    
    # Don't read the user's ~/.rhosts and ~/.shosts files
    IgnoreRhosts yes
    # For this to work you will also need host keys in /etc/ssh_known_hosts
    RhostsRSAAuthentication no
    # similar for protocol version 2
    HostbasedAuthentication no
    # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
    #IgnoreUserKnownHosts yes
    
    # To enable empty passwords, change to yes (NOT RECOMMENDED)
    PermitEmptyPasswords no
    
    # Change to yes to enable challenge-response passwords (beware issues with
    # some PAM modules and threads)
    ChallengeResponseAuthentication no
    
    # Change to no to disable tunnelled clear text passwords
    #PasswordAuthentication yes
    
    # Kerberos options
    #KerberosAuthentication no
    #KerberosGetAFSToken no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    
    # GSSAPI options
    #GSSAPIAuthentication no
    #GSSAPICleanupCredentials yes
    
    X11Forwarding yes
    X11DisplayOffset 10
    PrintMotd no
    PrintLastLog yes
    TCPKeepAlive yes
    #UseLogin no
    
    #MaxStartups 10:30:60
    #Banner /etc/issue.net
    
    # Allow client to pass locale environment variables
    AcceptEnv LANG LC_*
    
    Subsystem sftp sftp-server
    
    # Set this to 'yes' to enable PAM authentication, account processing,
    # and session processing. If this is enabled, PAM authentication will
    # be allowed through the ChallengeResponseAuthentication and
    # PasswordAuthentication.  Depending on your PAM configuration,
    # PAM authentication via ChallengeResponseAuthentication may bypass
    # the setting of "PermitRootLogin without-password".
    # If you just want the PAM account and session checks to run without
    # PAM authentication, then enable this but set PasswordAuthentication
    # and ChallengeResponseAuthentication to 'no'.
    UsePAM yes
    

    sftp-server package is installed. (sudo apt-get install openssh-sftp-server)

    • Slava Knyazev
      Slava Knyazev almost 8 years
      @Jakuje Hmm.. the issue seems to be in fact with sftp. Trying with filezilla gives Received unexpected end-of-file from SFTP server
    • Jakuje
      Jakuje almost 8 years
      2) Can you sftp to different users? 3) How does you sshd_config on server look like? 4) How does your ~/.bashrc look like?
    • Slava Knyazev
      Slava Knyazev almost 8 years
      @Jakuje Same 2) Nope.. Same error for all users. 3) pastebin.com/raw/ujNk3fVR 4) bashrc got nothing of relevance but here: pastebin.com/raw/mUD3DWmG
    • Jakuje
      Jakuje almost 8 years
      What you get from which sftp-server. Subsystem should be Subsystem sftp /usr/lib/openssh/sftp-server. Do you have sftp-server installed? apt-get install openssh-sftp-server.
    • Slava Knyazev
      Slava Knyazev almost 8 years
      @Jakuje openssh-sftp-server is installed, however the which command returns nothing.
    • Slava Knyazev
      Slava Knyazev almost 8 years
      @DavidFoerster Done!
    • Edd Barrett
      Edd Barrett almost 5 years
      This can happen if the host key of the server has changed. Try a regular ssh connection and look for errors.
  • Slava Knyazev
    Slava Knyazev almost 8 years
    Yes I am able to ssh to it. "The same error happens if I SSH into the system[..]" Implied it. Server is setup correctly as far as I know
  • Christopher Angulo-Bertram
    Christopher Angulo-Bertram almost 8 years
    OK, I may be miss reading your comment, were you successfuly able to login with ssh, or as I read here: "The same error happens if I SSH into the system[..]"
  • Slava Knyazev
    Slava Knyazev almost 8 years
    I can ssh to it just fine
  • Christopher Angulo-Bertram
    Christopher Angulo-Bertram almost 8 years
    OK, looking at your command line maybe you have an extra space? I found this one on line I will send you the link. sshfs <username>@<ipaddress>:/remotepath ~/remoteserv I found it here: howtogeek.com/howto/ubuntu/… There are a bunch of other instructions but in your original question your command seems to have an extra space
  • Christopher Angulo-Bertram
    Christopher Angulo-Bertram almost 8 years
    I also do not see where you are connecting to your local system as a directory. Your code my code to follow: sshfs [email protected]:/ testfo
  • Christopher Angulo-Bertram
    Christopher Angulo-Bertram almost 8 years
    My code: sshfs <username>@<ipaddress>:/remotepath ~/remoteserv
  • Christopher Angulo-Bertram
    Christopher Angulo-Bertram almost 8 years
    Do you see the extra space before testfo in your command?
  • David Foerster
    David Foerster almost 8 years
    The Stack Exchange network sites are very strict on the distinction between answers providing solutions, and comments. Comments showed up as a origin of spam, and heavy discussions not fitting the Stack Exchange model – this is why some reputation is required for posting them, showing you got familiar with the site's idea. This is not meant for annoying new users, but keeping the site's quality high. (See Why and how are some answers deleted?)
  • Bemmu
    Bemmu over 4 years
    Thanks, was able to mount with this tip.
  • Jamaluddin Rumi
    Jamaluddin Rumi over 3 years
    thank you very much. it works :)