我有一个小型 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)
}
}
Run Code Online (Sandbox Code Playgroud)
不知何故,我无法连接到执行此代码的 FTP 服务器,它会产生以下输出:
EOF cannot connect
Run Code Online (Sandbox Code Playgroud)
我尝试使用FileZilla 连接到同一个 FTP 服务器,它工作正常,我能够成功连接到服务器。
关于如何解决此问题或进一步调试问题的任何想法?谢谢
端口 22 通常是 SSH/SFTP,而不是 FTP。请注意,FileZilla 同时支持 FTP 和 SFTP。因此,您很可能实际上是使用 FileZilla 与 SFTP 连接。这两个协议完全不同且不兼容。
Go 似乎有一个“sftp”包:
https ://pkg.go.dev/github.com/pkg/sftp
| 归档时间: |
|
| 查看次数: |
490 次 |
| 最近记录: |