Python, SFTP соединение с SSH - ключ Ed25519 - PullRequest
0 голосов
/ 24 октября 2019

У меня много проблем с подключением к FTP. Сервер, который я использую, не поддерживает TLS, как в случае с предыдущим сервером. Вместо этого он использует SSH с Ed25519.

Шаг 1

Я попытался зайти на свой FTP с помощью PUTTY. Затем я получил всплывающее окно с отпечатком пальца, нажал «Да» и скопировал данные «hostkey» из реестра Windows.

Шаг 2

Я жестко запрограммировал его.

Ошибки

Первой ошибкой было 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...