簡體   English   中英

無法使用 Go 連接到 FTP 服務器,但可以使用 FileZilla 連接

[英]Cannot connect to FTP server using Go but can connect using FileZilla

我有一個小的 Golang 程序,我正在嘗試連接到在 docker 容器中運行的 FTP 服務器( https://registry.hub.docker.com/r/atmoz/sftp )。

我的機器是 M1 Pro MacBook。

使用以下命令啟動容器: docker run -p 22:22 -d atmoz/sftp foo:pass:::upload

Go 版本為 1.17.13。

該程序的代碼代碼如下:

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)
    }
}

不知何故,我無法連接到執行此代碼的 FTP 服務器,結果為以下 output:

EOF cannot connect

我嘗試使用FileZilla 連接到同一個 FTP 服務器,它工作正常,我能夠成功連接到服務器。

關於如何解決此問題或進一步調試問題的任何想法? 謝謝

端口 22 通常是 SSH/SFTP,而不是 FTP。請注意,FileZilla 同時支持 FTP 和 SFTP。 所以很可能您實際上是在使用 FileZilla 連接 SFTP。 這兩個協議完全不同且不兼容。

對於 Go,似乎有一個“sftp”package:
https://pkg.go.dev/github.com/pkg/sftp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM