[英]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.