Я могу использовать оба сервера SERVER1 и SERVER2 (указано выше). Я могу использовать командную строку для sftp в SERVER1 и SERVER2, без проблем.
Однако, когда я пытаюсь использовать python 3.7 (pysftp) для подключения к SERVER2, я возвращаюсь
ОТЛАДКА: paramiko.transport: Попытка аутентификации пароля ...
ОТЛАДКА: paramiko.transport: пользователь в порядке
ОТЛАДКА: paramiko.transport: тип аутентификации (пароль) не разрешен.
DEBUG: paramiko.transport: Разрешенные методы: ['publickey', 'клавиатура-интерактив']
ОТЛАДКА: paramiko.transport: пользователь в порядке
ИНФОРМАЦИЯ: paramiko.transport: Ошибка аутентификации (клавиатурно-интерактивная).
Вместо того, чтобы запускать извлечение с помощью командной строки и некоторых ETL-процессов на python, я хотел бы хранить все в одной программе - предпочтительно на python 3.7 и не использовать никаких открытых / закрытых ключей.
Какие-нибудь советы, чтобы paramiko / pysftp запускал интерактивную клавиатуру?
import pysftp
import getpass
question = input ("Do you want to: A) Connect to SERVER1 B) Connect to SERVER2. [A/B]? : ")
# Decide whether SERVER 1 or SERVER 2
if question == "A":
hostname="SERVER1"
username='TESTUSER'
elif question == "B": # STILL CANNOT FIGURE OUT HOW TO PROPERLY CONNECT TO SIS SFTP
hostname="SERVER2"
username='###USER'
else:
print("Not permitted")
# Get security clearances, don't want to hardcode any passwords right now
tkpass = getpass.getpass("Password:")
# DEBUGGER HERE
import sys
import logging
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
# Make the connection to the server
srv = pysftp.Connection(host=hostname, username=username,
password=tkpass)
# Get the directory and file listing
data = srv.listdir()
# Closes the connection
srv.close()
# Prints out the directories and files, line by line
for i in data:
print(i)