首頁  >  文章  >  後端開發  >  無法使用 Go 連接到 FTP 伺服器,但可以使用 FileZilla 連接

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

PHPz
PHPz轉載
2024-02-09 21:51:17502瀏覽

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

php小編子墨發現有使用者回授在使用Go語言連接到FTP伺服器時遇到了問題,但使用FileZilla卻可以正常連線。這個問題可能導致一些開發者無法順利進行FTP操作。在本文中,我們將探討可能的原因以及解決方法,幫助讀者解決這個連線問題,以便能夠順利使用Go語言連接到FTP伺服器。

問題內容

我有一個小型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 伺服器,它會產生以下輸出:

EOF cannot connect

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

關於如何解決此問題或進一步調試問題有什麼想法嗎?謝謝

解決方法

連接埠 22 通常是 SSH/SFTP,而不是 FTP。請注意,FileZilla 同時支援 FTP 和 SFTP。因此,您很可能實際上是使用 FileZilla 與 SFTP 連線。這兩個協議完全不同且不相容。

Go 似乎有一個「sftp」套件:
https://www.php.cn/link/c6344b0ae32e496be8b1b701e540d566

以上是無法使用 Go 連接到 FTP 伺服器,但可以使用 FileZilla 連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除