Сгенерируйте закрытый ключ для AWS Python Lambda для sftp на целевой хост - PullRequest
1 голос
/ 22 апреля 2020

Я создаю Python AWS лямбда-функцию, которая подключается к БД для извлечения данных в виде CSV, а затем передает этот CSV на SFTP-сервер (ab c .example.com). Я использую pysftp и Paramiko. Похоже, pysftp нужен файл с закрытым ключом для пароля без подключения к хосту SFTP. Как получить этот файл закрытого ключа?

Нужно ли нам создавать пару открытого / закрытого ключа (ssh-keygen) на целевом хосте SFTP? А затем использовать publi c часть этого ключа в функции Lambda?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Просто настройте аутентификацию по ключу publi c точно так же, как вы делали бы это для обычного (GUI / командной строки) SFTP или S SH клиента. В этом нет ничего pysftp / Python / Lambda-специфика c.

На Inte rnet есть миллионы руководств, показывающих, как это сделать.
Например, моя статья Настройка S SH publi c аутентификация по ключу .


А затем используйте закрытый ключ в своем коде Python / pysftp:
Подключитесь к SFTP с помощью файла ключа, используя Python pysftp


Поскольку pysftp требует ключ в физическом файле, что может быть сложно сделать в AWS Lambda, вы также можете жестко закодировать ключ в Python код, если вы переключитесь на Paramiko:
SSH / SCP через Paramiko с ключом в строке
(см. pysftp против Paramiko )

0 голосов
/ 22 апреля 2020

Да, если у вас его еще нет, вам нужно создать ключи, используя ssh-keygen на хосте sftp, и использовать его.

import pysftp
with pysftp.Connection('hostname', username='me', private_key='/path/to/keyfile') as sftp:
    #
    # ... do sftp operations
    #

Ссылка: https://pysftp.readthedocs.io/en/release_0.2.8/cookbook.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...