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

使用空密码在Dropbear SSH服务器初始化paramiko.SFTPClient时遇异常

解决无密码SSH服务器的Paramiko SFTP连接问题

你当前代码里先尝试空密码connect再调用auth_none的方式会导致Transport状态异常,这就是open_sftp()失败的核心原因。直接通过Transport完成无密码认证,再绑定到SSHClient或直接创建SFTPClient更可靠,完全满足你不用公钥、空密码验证的需求。

修正后的代码方案

import paramiko

HOST = "127.0.0.1"
USER = "root"

# 初始化Transport并建立基础连接
transport = paramiko.Transport((HOST, 22))
transport.connect()

# 执行无密码认证(需服务器开启PermitEmptyPasswords yes)
transport.auth_none(USER)

# 绑定Transport到SSHClient(如果需要用SSHClient执行命令等操作)
ssh = paramiko.SSHClient()
ssh._transport = transport

# 直接从已认证的Transport创建SFTPClient
sftp = paramiko.SFTPClient.from_transport(transport)

# 示例:测试SFTP操作,比如列出当前目录文件
print(sftp.listdir("."))

# 用完记得关闭资源
sftp.close()
transport.close()

关键说明

  • 跳过SSHClient.connect()的默认认证流程,它会优先尝试公钥认证,空密码会触发异常,直接用Transport处理连接和认证更可控。
  • auth_none(USER)是无密码认证的核心调用,前提是目标SSH服务器已开启PermitEmptyPasswords yes配置,否则会认证失败。
  • 若不需要SSHClient的命令执行等功能,可直接跳过绑定步骤,仅用Transport创建SFTPClient即可。

内容的提问来源于stack exchange,提问作者Bijesh Mohan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:29:58