Heim  >  Artikel  >  Backend-Entwicklung  >  Mit Go kann keine Verbindung zum FTP-Server hergestellt werden, aber mit FileZilla ist eine Verbindung möglich

Mit Go kann keine Verbindung zum FTP-Server hergestellt werden, aber mit FileZilla ist eine Verbindung möglich

PHPz
PHPznach vorne
2024-02-09 21:51:17502Durchsuche

无法使用 Go 连接到 FTP 服务器,但可以使用 FileZilla 连接

Der PHP-Editor Zimo hat herausgefunden, dass einige Benutzer berichteten, dass sie bei der Verwendung der Go-Sprache zum Herstellen einer Verbindung zum FTP-Server auf Probleme gestoßen seien, sie sich jedoch mit FileZilla normal verbinden konnten. Dieses Problem kann dazu führen, dass einige Entwickler FTP-Vorgänge nicht reibungslos ausführen können. In diesem Artikel untersuchen wir die möglichen Ursachen und Lösungen, um den Lesern bei der Lösung dieses Verbindungsproblems zu helfen, damit sie mithilfe der Go-Sprache erfolgreich eine Verbindung zum FTP-Server herstellen können.

Frageninhalt

Ich habe ein kleines Golang-Programm und versuche, eine Verbindung zu einem FTP-Server (https://registry.hub.docker.com/r/atmoz/sftp) herzustellen, der in einem Docker-Container läuft.

Mein Gerät ist ein M1 Pro MacBook.

Starten Sie den Container mit dem folgenden Befehl: docker run -p 22:22 -d atmoz/sftp foo:pass:::upload

go-Version ist 1.17.13.

Der Programmcode lautet wie folgt:

package main

import (
    "log"
    "time"

    "github.com/jlaffaye/ftp"
)

func main() {
    c, err := ftp.dial("localhost:22", ftp.dialwithtimeout(5*time.second))
    if err != nil {
        log.fatal(err, " cannot connect")
    }

    err = c.login("foo", "pass")
    if err != nil {
        log.fatal(err, "cannot login")
    }

    // do something with the ftp conn

    if err := c.quit(); err != nil {
        log.fatal(err)
    }
}

Irgendwie kann ich keine Verbindung zum FTP-Server herstellen, der diesen Code ausführt, er erzeugt die folgende Ausgabe:

EOF cannot connect

Ich habe versucht, mit filezilla eine Verbindung zum selben FTP-Server herzustellen, und es hat einwandfrei funktioniert und ich konnte erfolgreich eine Verbindung zum Server herstellen.

Irgendwelche Ideen, wie man das Problem beheben oder das Problem weiter beheben kann? Danke

Workaround

Port 22 ist normalerweise SSH/SFTP, nicht FTP. Beachten Sie, dass FileZilla sowohl FTP als auch SFTP unterstützt. Es ist also wahrscheinlich, dass Sie tatsächlich FileZilla verwenden, um eine Verbindung mit SFTP herzustellen. Die beiden Protokolle sind völlig unterschiedlich und inkompatibel.

Go scheint ein „sftp“-Paket zu haben:
https://www.php.cn/link/c6344b0ae32e496be8b1b701e540d566

Das obige ist der detaillierte Inhalt vonMit Go kann keine Verbindung zum FTP-Server hergestellt werden, aber mit FileZilla ist eine Verbindung möglich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen