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



我有一个小的Golang程序,我试图连接到一个运行在docker容器(https://registry.hub.docker.com/r/atmoz/sftp)的FTP服务器。

我的电脑是一台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连接的可能性很大。这两种协议是完全不同和不兼容的。

似乎有一个"package for Go:
https://pkg.go.dev/github.com/pkg/sftp

最新更新