Ich habe einen dedizierten Server mit Ubuntu Server 16.04 + VestaCP. Der SSH-Zugriff funktioniert einwandfrei, aber SFTP ist ausgefallen. Ich weiß nicht, wann es ausgefallen ist, aber davor hat alles wie erwartet funktioniert.
Wenn ich mich von einer lokalen Maschine aus mit SFTP verbinde, funktioniert es:
Mar 6 13:52:37 local sftp-server[2120]: session opened for local user user1 from [10.10.80.120]
Mar 6 13:52:37 local sftp-server[2120]: received client version 3
Mar 6 13:52:37 local sftp-server[2120]: debug3: request 1: realpath
Mar 6 13:52:37 local sftp-server[2120]: realpath "."
Mar 6 13:52:37 local sftp-server[2120]: debug1: request 1: sent names count 1
Wenn ich es vom Remote-Host aus versuche, erhalte ich eine Zeile:
Mar 6 19:34:06 server sftp-server[3545]: session opened for local user root from [xxx.xxx.xxx.xxx]
Es passiert nichts und die Verbindung wird durch ein Timeout unterbrochen. Ich erhalte keine Fehlermeldungen und kann die Ursache dieses Problems nicht ermitteln.
Ich habe Standardeinstellungen in /etc/ssh/sshd_config:
Subsystem sftp /usr/lib/openssh/sftp-server -l debug3
Ich möchte es nicht durch internes SFTP ersetzen. Dies sollte ohne Änderungen funktionieren, da es vorher funktioniert hat.
Antwort1
Wenn ein SFTP-Client eine Verbindung zu einem SFTP-Server herstellt,erster DatenaustauschDer Client muss lediglich seine SFTP-Protokollversion an den Server senden. Der Server antwortet mit der SFTP-Protokollversion, die er für die Sitzung verwenden möchte, und Client und Server fahren dann von dort aus fort.
Sie können in Ihrem ersten Protokollbeispiel sehen, dass der Client seine Version an den Server gesendet hat:
6. März 13:52:37 lokaler SFTP-Server [2120]: Clientversion 3 erhalten
Diese Zeile fehlt im zweiten Protokollbeispiel. Die einfachste Erklärung dafür ist, dass der Client sie nie gesendet hat.
Kurz gesagt, es sieht so aus, als ob der im zweiten Fall verwendete SFTP-Client nicht richtig funktioniert. Er sendet nicht die Nachricht, die er senden soll, um den SFTP-Austausch zu starten.