使用SSH Ed25519密钥的Python、SFTP连接

2024-09-20 03:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我的FTP连接有很多问题。我使用的服务器不支持TLS,就像以前的服务器一样。相反,它使用SSH和Ed25519。在

第1步

我试图用PUTTY登录FTP。然后我弹出一个带有指纹的弹出窗口,点击“是”并从Windows注册表复制粘贴了“hostkey”数据。在

第2步

我已经硬编码了。在

错误

第一个trown错误是Incorrect padding,即使hostkey可以被3整除。我粘贴的hostkey中的字符数是132。很容易联系上ftplib.FTP\TLS. 在

我需要什么

如果我的代码是正确的,请尝试使用我的代码。我在下面附上我的代码。差不多两天后我就放弃了。我找不到任何使用ed25519键记录日志的示例。在

编码

import pysftp as sftp
import paramiko
from base64 import decodebytes

myHostname = ""
myUsername = ""
myPassword = ""

key = b'0x2994....,0xe4fb.....'
print(len(key), len(key)%4, len(key)%3)

key = paramiko.ed25519key.Ed25519Key(data=decodebytes(key).hex())

cnopts = sftp.CnOpts()
cnopts.hostkeys.add(myHostname, 'ssh-ed25519', key)

print('TYPE CNOPTS', cnopts, type(cnopts), cnopts.__dict__['hostkeys'].__dict__)

def ftp_connect():
    try:
        ftp = sftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts)

    except Exception as ex:
        print('CONN EX', ex)
    else:
        return ftp

ftp_connect()

Tags: key代码import服务器编码len错误tls