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中文網其他相關文章!