Próbuję zamontować sftp
połączenie w folderze za sshfs
pomocą 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
~/.ssh
Katalog 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-server
pakiet jest zainstalowany. ( sudo apt-get install openssh-sftp-server
)
sftp
dotrzeć bezpośrednio? Jaka jest zawartość~/.bashrc
lub inne pliki startowe w twoim katalogu domowym serwera?Received unexpected end-of-file from SFTP server
sftp
dla różnych użytkowników? 3) Jaksshd_config
wyglądasz na serwerze? 4) Jak twój~/.bashrc
wygląd?which sftp-server
. Podsystem powinien byćSubsystem sftp /usr/lib/openssh/sftp-server
. Czy maszsftp-server
zainstalowany?apt-get install openssh-sftp-server
.Odpowiedzi:
Twoja
Subsystem
wartośćsshd_config
jest błędna.Powinien to być
Subsystem sftp /usr/lib/openssh/sftp-server
lubinternal-sftp
. Spróbuj zmodyfikować/etc/ssh/sshd_config
tę wartość, uruchom ponownie usługę ssh i spróbuj jeszcze raz.źródło
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
sudo
i 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).źródło
Ten błąd pojawi się, jeśli na zdalnym serwerze działa Dropbear zamiast OpenSSH.
Stąd: /unix/363540/mount-a-filesystem-using-sshfs-using-the-dropbear-server-on-yocto-firmware
źródło
Jeśli jesteś w stanie połączyć się z hostem przez sam ssh:
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:
źródło
Nie jestem pewien, czy to pomaga, ale miałem podobny problem
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):
zamiast standardowego ssh, gdy numer portu to 22. Więc to samo musiało być użyte do połączenia sshfs:
To rozwiązało mój problem.
źródło
Inną przyczyną, która mi się przytrafiła, był
dropbearmulti
brak samego łańcucha w łańcuchu,/usr/libexec/sftp-server
któ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 nazwiedropbear
wskazujedropbearmulti
. Zatrzymaj bieżącą za pomocąstopservice sshd
, a następnie uruchom działającą. Zobacz,ps
jak wyglądają odpowiednie parametry. Najlepiej jest mieć go na jffs (lub rozpakować do / tmp), aby móc nadal miećumount
dowolny dysk.źródło