SSH-Konsolenanmeldung funktioniert, SFTP jedoch nicht. Warum?

16

Ich versuche, mit Filezilla SFTP zu betreiben, aber es kann keine Verbindung zum Server hergestellt werden, und ich denke, das liegt an meinen Firewall-Regeln?

Ich kann absolut gut SSH. Der Port für SSH ist 6128. Kann mir jemand sagen, welche Änderungen ich vornehmen müsste, um eine FTP-Verbindung über SSH zuzulassen, da SSH bereits funktioniert?

(Hier sind meine IPtables Regeln)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9987
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10011
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:30033
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:6128
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
zehn Mal
quelle
Die Antwort von Filezilla ist: „Disconnected: keine Authentifizierungsmethoden unterstützt verfügbar (Server gesendet: publickey)“ Aber ich den gleichen Schlüssel bin mit , dass die Arbeiten für meine SSH - Konsole Login (PuTTy auf Windows btw)
tentimes
1
SFTP ist NICHT FTP über SSH. Sie müssen FTP nirgendwo zulassen. Die Tatsache, dass Filezilla "Keine unterstützten Authentifizierungsmethoden verfügbar" anzeigt, bedeutet, dass eine Verbindung zum Server besteht und das Problem nichts mit Ihrer Firewall zu tun hat. Wie haben Sie Filezilla für die Verwendung Ihres öffentlichen Schlüssels eingerichtet?
Circus Cat
Hallo und willkommen bei Unix & Linux. Es wird verwirrend, dass b / c SFTP eine Komponente seines Namens mit dem Protokoll FTP teilt, aber darüber hinaus nichts miteinander zu tun hat. SSH ist ein einzelnes Protokoll, das auf Port 22 ausgeführt wird und die Möglichkeit bietet, eine sichere Verbindung in Form einer interaktiven Shell herzustellen oder Dateien über dieselbe Verbindung zu übertragen. Der SSH-Server auf der Remote-Seite muss SFTP-Verbindungen zulassen. Daher werde ich in den Protokollen des SSH-Servers nachsehen, warum dies fehlschlägt, und außerdem sicherstellen, dass Filezilla über einen geeigneten Schlüssel für die sichere Verbindung zum Server verfügt.
slm
Ich würde auch einen Blick darauf werfen und überprüfen, ob SFTP ordnungsgemäß vom Server selbst eingerichtet wurde. Ja, Sie können das Befehlszeilentool sftpauf dem Server verwenden, um eine Verbindung herzustellen. Dies ist hilfreich, um die Dinge zu überprüfen, bevor Sie Filezilla in den Mix aufnehmen. digitalocean.com/community/tutorials/… .
slm

Antworten:

9

Um von anderen Hosts auf Ihr SFTP zuzugreifen, stellen Sie bitte sicher, dass das Folgende installiert und richtig konfiguriert ist.

  • Installierte OpenSSH-Server
  • Konfigurierte sshd_config
    • PubkeyAuthentication ja
    • Subsystem sftp internal-sftp
  • Fügte Ihren öffentlichen Schlüssel zu ~ / .ssh / authorized_keys hinzu

  • Starten Sie den SSH-Server mit geöffnetem Port 22 / TCP # /etc/init.d/sshd start

  • # iptables -I INPUT -j ACCEPT -p tcp --dport 22

Schließlich testen $ sftp <login>@<hostname>

OMG-1
quelle
Eine weitere gute Idee ist es, mit [[$ -! = I ]] && return nach interaktiven Sitzungen zu suchen.
1.
1
Subsystem sftp internal-sftphabe es für mich getan. /usr/libexec/openssh/sftp-serverStandardmäßig war es so eingestellt , dass es es gar nicht gab
quietContest
Das Hinzufügen Subsystem sftp internal-sftpzu sshd_config funktionierte auch für mich ohne weitere Änderungen an Centos.
Corgalore
2

In meinem Fall befand sich der Benutzer zsham Anfang seiner .bashrc-Datei, sodass er statt bash in die zsh-Shell fallen konnte.

Bash war seine Standard-Shell. Durch Entfernen dieses Befehls wurde das Problem behoben. Ich chsh user -s /bin/zshmöchte dann, dass der Benutzer zsh als seine Standard-Shell beibehält.

Shubham Chaudhary
quelle
Gleiches Problem mit anderen Shells (wie fish).
Paul
1

Haben Sie Text in einer Ihrer .profile-Dateien, der an die Konsole gesendet wird (z. B. Echoanweisungen), wie z .bashrc. Dies kann die SFTP-Konnektivität beeinträchtigen. Siehe meine Antwort auf eine ähnliche Frage zu Serverfehler

Paulus
quelle
Sei in der Tat vorsichtig damit. Wenn Sie eine andere Konsole automatisch starten, führt fishdies zu ähnlichen Problemen.
Paul
1

Dies kann auch durch Ihre Antivirensoftware verursacht werden. Wir haben es vor kurzem konfrontiert. sshvia PuTTY funktionierte einwandfrei, aber WinSCP konnte keine Verbindung herstellen. Die Arbeit wurde aufgenommen, nachdem im Anti-Virus eine Ausnahme konfiguriert wurde.

Sibil
quelle
0

Wenn Sie FileZilla verwenden, hat mir die folgende Antwort geholfen:

https://www.digitalocean.com/community/questions/able-to-access-via-ssh-but-not-filezilla

Wählen Sie in Filezilla im Menü Bearbeiten-> Einstellungen die Option Erweitern Sie im linken Bereich zu Verbindung-> SFTP. Stellen Sie auf der rechten Seite sicher, dass Sie die richtige private Schlüsseldatei haben, oder fügen Sie hinzu, wenn der richtige Eintrag fehlt.

Melden Sie sich mit der DO-Webkonsole als root an und führen Sie 'tail -f /var/log/auth.log' aus. Versuchen Sie dann, sich mit Filezilla anzumelden und alle Nachrichten zu notieren.

Ulad Kasach
quelle