You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pysftp连接免费公共SFTP服务器时遭遇ConnectionException与gaierror错误的解决方法咨询

解决pysftp连接免费SFTP服务器的域名解析与端口错误问题

你遇到的两个错误根源其实是同一个问题,加上可能的网络连通性问题,下面一步步拆解解决:

错误原因分析

  • gaierror: [Errno -2] Name or service not known:这是域名解析失败的典型报错,因为你把端口2222直接拼在了主机名demo.wftpserver.com后面(写成了demo.wftpserver.com:2222),pysftp会把整个字符串当作主机名去DNS解析,自然找不到对应的服务器。
  • ConnectionException: ('demo.wftpserver.com:2222', 22):解析失败后,pysftp会默认尝试连接端口22,所以会抛出这个连接异常。

可行的解决办法

1. 正确分离主机名和端口参数

pysftp的Connection类中,主机名和端口是分开的参数,不能合并写在一起。修改代码如下:

import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None  # 仅用于测试场景,生产环境不建议关闭主机密钥校验

# 正确传入主机名和端口
sftp = pysftp.Connection(
    host='demo.wftpserver.com',
    username='demo-user',
    password='demo-user',
    port=2222,
    cnopts=cnopts
)

print("SFTP连接成功!")
sftp.close()

2. 验证网络连通性

如果修改后还是报错,先检查你的网络能否访问这个服务器:

  • 打开终端/命令提示符,执行 ping demo.wftpserver.com,看能否正常解析到IP地址
  • 尝试用telnet测试端口连通性:telnet demo.wftpserver.com 2222,如果能连通说明网络没问题,否则可能是防火墙、代理或者服务器临时不可用

3. 生产环境建议:恢复主机密钥校验

你当前关闭了主机密钥检查(cnopts.hostkeys = None),这在测试时可以,但生产环境存在安全风险。建议获取服务器的主机密钥并添加到校验列表中,示例如下:

import pysftp

cnopts = pysftp.CnOpts()
# 替换为服务器实际的RSA密钥指纹(可通过官方文档或连接工具获取)
cnopts.hostkeys.add(
    'demo.wftpserver.com',
    'ssh-rsa',
    'AAAAB3NzaC1yc2EAAAADAQABAAABAQDQjV8XxG6...'
)

sftp = pysftp.Connection(
    host='demo.wftpserver.com',
    username='demo-user',
    password='demo-user',
    port=2222,
    cnopts=cnopts
)
sftp.close()

内容的提问来源于stack exchange,提问作者The Singularity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:02:43