1、使用paramiko模块连接sftp报错:paramiko.ssh_exception.AuthenticationException: Authentication failed.
直接上代码:
def connect_with_private_key():
# SFTP连接参数
hostname = 'xxxxxxxxx'
port = 22
username = 'xxxx'
private_key_path = r".ssh\id_rsa" # 替换为您的私钥路径
# 加载私钥
private_key = paramiko.RSAKey.from_private_key_file(private_key_path)
# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 建立连接
ssh.connect(hostname=hostname, port=port, username=username, pkey=private_key)
# 创建SFTP客户端
sftp = ssh.open_sftp()
print("SFTP连接成功!")
# 示例: 列出根目录文件
print("根目录文件:", sftp.listdir('.'))
# 关闭连接
sftp.close()
ssh.close()
if __name__ == "__main__":
connect_with_private_key()
如果你确认了连接信息都是无误的情况下,还是报错了`Authentication failed`

那么接下来你需要使用第三方客户端连接sftp,我这边使用了MobaXterm软件连接是可以连接上的,那么我们可以肯定的是连接信息和防火墙都是不存在问题的,我们把范围缩小看看MobaXterm连接是不是做了什么操作?
我们可以问下大模型,把所有可能出现的情况都尝试一遍;最终确认了是服务端配置了特定的认证方法顺序

把完整的诊断代码贴上:
import paramiko
import logging
import os
# 配置详细日志
logging.basicConfig()
logging.getLogger("paramiko").setLevel(logging.DEBUG)
def diagnose_connection():
host = 'your_host'
port = 22
username = 'your_username'
key_path = '/path/to/private_


1万+

被折叠的 条评论
为什么被折叠?



