sshfs daje „zdalny host się rozłączył”

14

Próbuję zamontować sftppołączenie w folderze za sshfspomocą następującego polecenia, które zgłasza błąd.

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

Ten sam błąd występuje, jeśli I SSH do systemu i powtórzę polecenie za pomocą localhost. To polecenie działało również z innym komputerem, dlatego problem występuje gdzieś na serwerze.

~$ 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

~/.sshKatalog jest własnością administratora, ponieważ zobaczyłem, że jako debugowanie próba dla podobnego problemu.

Dodatkowe informacje do wykorzystania w przyszłości:

Problem nie dotyczy samego SSH, ale SFTP. Przejawia się to tym, że połączenia SSH działają poprawnie, ale SFTP zawsze zawodzi. Próba SFTP skutkujeReceived unexpected end-of-file from SFTP server

Problem nie jest związany ze znakami wyjściowymi skryptów logowania (np ~/.bashrc.).

Problem występuje od wszystkich użytkowników (w tym root).

Oto moja konfiguracja sshd ( /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-serverpakiet jest zainstalowany. ( sudo apt-get install openssh-sftp-server)

Slava Knyazev
źródło
1) Czy jesteś w stanie sftpdotrzeć bezpośrednio? Jaka jest zawartość ~/.bashrclub inne pliki startowe w twoim katalogu domowym serwera?
Jakuje
@Jakuje Hmm .. wydaje się, że problem dotyczy w rzeczywistości sftp. Próbowanie z filezillą dajeReceived unexpected end-of-file from SFTP server
Slava Knyazev
2) Czy możesz sftpdla różnych użytkowników? 3) Jak sshd_configwyglądasz na serwerze? 4) Jak twój ~/.bashrcwygląd?
Jakuje
@Jakuje Same 2) Nie. Ten sam błąd dla wszystkich użytkowników. 3) pastebin.com/raw/ujNk3fVR 4) bashrc nie ma nic istotnego, ale tutaj: pastebin.com/raw/mUD3DWmG
Slava Knyazev
Co można uzyskać z which sftp-server. Podsystem powinien być Subsystem sftp /usr/lib/openssh/sftp-server. Czy masz sftp-serverzainstalowany? apt-get install openssh-sftp-server.
Jakuje,

Odpowiedzi:

5

Twoja Subsystemwartość sshd_configjest błędna.

Powinien to być Subsystem sftp /usr/lib/openssh/sftp-serverlub internal-sftp. Spróbuj zmodyfikować /etc/ssh/sshd_configtę wartość, uruchom ponownie usługę ssh i spróbuj jeszcze raz.

Jakuje
źródło
6

Stare pytanie, ale pierwsze, które pojawia się w przypadku tego problemu.

Mój problem polegał na tym, że serwer wymagał uwierzytelnienia za pomocą klucza, ale uruchamiałem polecenie, używając sudoi określając -o IdentityFile=~/.ssh/id_rsa, co oznacza, że ~został rozszerzony na dom administratora, a nie mój.

Określenie pełnej ścieżki zadziałało i wyobrażam sobie, $HOMEże użycie też by miało (ponieważ rozszerzyłoby się wcześniej).

BlueDrink9
źródło
1
Dzięki, udało się zamontować z tą końcówką.
Bemmu
0

Jeśli jesteś w stanie połączyć się z hostem przez sam ssh:

ssh xxx.xxx.xxx.xxx

Możesz zostać poproszony o zapisanie klucza, musisz wpisać TAK, a nie tylko Y. Powinieneś wtedy zostać poproszony o podanie nazwy użytkownika i hasła dla użytkownika na tym zdalnym komputerze.

Użyj tego, z którym próbujesz zrobić sshfs, prześlij wyniki.

Jeśli otrzymasz odmowę połączenia, domyślam się, że nie zainstalowałeś SSH na komputerze zdalnym. Otwórz ssh można zainstalować za pomocą tego polecenia, uruchom na komputerze zdalnym:

sudo apt install openssh-server
Christopher Angulo-Bertram
źródło
1
Tak, jestem w stanie ssh do tego. „Ten sam błąd występuje, jeśli I SSH do systemu [..]” Implikował to. Serwer jest poprawnie skonfigurowany, o ile mi wiadomo
Slava Knyazev
OK, mogę przegapić czytanie twojego komentarza, czy udało Ci się zalogować za pomocą ssh, lub jak czytam tutaj: „Ten sam błąd występuje, jeśli SSH do systemu [..]”
Christopher Angulo-Bertram
Mogę to zrobić w porządku
Slava Knyazev
OK, patrząc na linię poleceń może masz dodatkowe miejsce? Znalazłem ten on-line Wyślę ci link. sshfs <nazwa użytkownika> @ <adres_adresu>: / remotepath ~ / remoteserv Znalazłem go tutaj: howtogeek.com/howto/ubuntu/… Istnieje wiele innych instrukcji, ale w twoim pierwotnym pytaniu twoje polecenie wydaje się mieć dodatkową spację
Christopher Angulo-Bertram
Nie widzę też katalogu, w którym łączysz się z systemem lokalnym. Twój kod mój kod do naśladowania: sshfs [email protected]: / testfo
Christopher Angulo-Bertram
0

Nie jestem pewien, czy to pomaga, ale miałem podobny problem

remote host has disconnected

i po kilku przeglądaniach i przeglądaniu uświadomiłem sobie, że tak naprawdę podłączyłem ssh przez inny port.

Na przykład musiałem połączyć się przez ssh (przykład, zakładając, że numer portu 1234):

ssh [email protected] -p 1234

zamiast standardowego ssh, gdy numer portu to 22. Więc to samo musiało być użyte do połączenia sshfs:

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

To rozwiązało mój problem.

imiejego44
źródło
0

Inną przyczyną, która mi się przytrafiła, był dropbearmultibrak samego łańcucha w łańcuchu, /usr/libexec/sftp-serverktóry zgubił się gdzieś w okolicy kompilacji 33600 DD-WRT. Sprawdź, czy wspomniany plik binarny wspomina o tym pliku, bo inaczej nie będzie działać, nawet jeśli jest obecny. Musiałem użyć pliku binarnego z kompilacji 33525 i stworzyć program uruchamiający, który zabija normalnego buggy dropbeara, a następnie uruchamia ten. Tworzysz dowiązanie symboliczne o nazwie dropbearwskazuje dropbearmulti. Zatrzymaj bieżącą za pomocą stopservice sshd, a następnie uruchom działającą. Zobacz, psjak wyglądają odpowiednie parametry. Najlepiej jest mieć go na jffs (lub rozpakować do / tmp), aby móc nadal mieć umountdowolny dysk.

Zdenek
źródło