首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ftplib ConnectionRefusedError:[Errno 111]连接被拒绝(python3.5)

Ftplib ConnectionRefusedError:[Errno 111]连接被拒绝(python3.5)
EN

Stack Overflow用户
提问于 2018-04-27 10:05:18
回答 1查看 4.8K关注 0票数 3

我有一个脚本应该连接到FTP

代码语言:javascript
复制
from ftplib import FTP

with FTP('IP') as ftp:
   ftp.login(user='my user', passwd='my password')
   ftp.cwd('/MY_DIR')
   ftp.dir()

我有一个错误:ConnectionRefusedError: [Errno 111] Connection refused

ftp是一个带有vsftpd的EC2。

代码语言:javascript
复制
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=IP
pasv_addr_resolve=YES

已试过:

该代码工作在其他FTP与不含TLS (托管在1和1,OVH.)

我在NodeJS中尝试了这个脚本

代码语言:javascript
复制
const ftpClient = require('ftp-client');

const client = new ftpClient({
   host: "IP",
   port: 21,
   user: "My user", // defaults to "anonymous"
   password: "My password" // defaults to "@anonymous"
});

client.connect(() => {

  client.download('/MY_DIR/file','/tmp/file', (res) => {
        console.log(res)
  })
});

工作非常好,所以我排除了防火墙问题。

我试过启用TLS

代码语言:javascript
复制
ssl_enable=YES
require_ssl_reuse=NO

然后sudo服务vsftpd重新启动。

并使用

FTP_TLS而不是FTP,但没有起作用

此外,我尝试通过设置禁用被动模式

代码语言:javascript
复制
pasv_enable=NO

然后是sudo service vsftpd restart

ftp.set_pasv(False)

也不起作用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 16:27:15

解决方案

在使用filezilla调试方法之后,尽管我们在/etc/vsftpd.conf中定义了,但是我们的FTP返回了0.0.0.0

代码语言:javascript
复制
pasv_adress=IP

这篇文章帮助了我们:https://www.centos.org/forums/viewtopic.php?t=52408

你得评论一下

代码语言:javascript
复制
listen_ipv6=YES

和启用

代码语言:javascript
复制
listen=YES

/etc/vsftpd.conf

此外,如果无法访问FTP的vsftpd.conf,也可以重写ftplib的类FTP

代码语言:javascript
复制
class CustomFTP(ftplib.FTP):

    def makepasv(self):
        if self.af == socket.AF_INET:
            host, port = ftplib.parse227(self.sendcmd('PASV'))
        else:
            host, port = ftplib.parse229(self.sendcmd('EPSV'), self.sock.getpeername())

        if '0.0.0.0' == host:
            """ this ip will be unroutable, we copy Filezilla and return the host instead """
            host = self.host
        return host, port

如果发送'0.0.0.0',则强制上一台主机

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50060037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档