python连接sftp的问题汇总

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_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值