我正在使用 gftp 库创建一个 ftp 客户端。连接到服务器可以工作,但是当我尝试列出当前目录的内容时,服务器因
229 Entering Extended Passive Mode
而挂起。我读到这可能是防火墙问题,但如果我使用 Filezilla 连接到 FTP 服务器,它就可以工作。
我做错了什么?
这是我正在使用的代码:
c, err := ftp.Dial(
os.Getenv("ftpserver"),
ftp.DialWithExplicitTLS(
&tls.Config{
InsecureSkipVerify: true,
},
),
ftp.DialWithDebugOutput(os.Stdout),
ftp.DialWithTimeout(5*time.Second),
)
err = c.Login(os.Getenv("username"), os.Getenv("password"))
if err != nil {
log.Fatal(err)
}
fmt.Println(c.List("/"))
// Do something with the FTP conn
if err := c.Quit(); err != nil {
log.Fatal(err)
}
这是它给我的输出:
220 (vsFTPd 3.0.3)
AUTH TLS
234 Proceed with negotiation.
USER username
331 Please specify the password.
PASS pasword
230 Login successful.
FEAT
211-Features:
AUTH TLS
UTF8
EPRT
EPSV
MDTM
PASV
PBSZ
PROT
REST STREAM
SIZE
TVFS
211 End
TYPE I
200 Switching to Binary mode.
OPTS UTF8 ON
200 Always in UTF8 mode.
PBSZ 0
200 PBSZ set to 0.
PROT P
200 PROT now Private.
EPSV
229 Entering Extended Passive Mode (|||7339|)
我也遇到了同样的事情。它似乎与此问题有关。建议修复here,这对我有用 - 降级到
v0.0.0-20220301011324-fed5bc26b7fa
$ go get github.com/jlaffaye/[email protected]
go: downloading github.com/jlaffaye/ftp v0.0.0-20220301011324-fed5bc26b7fa
go: downgraded github.com/jlaffaye/ftp v0.0.0-20220829015825-b85cf1edccd4 => v0.0.0-20220301011324-fed5bc26b7fa