生成AWS Python Lambda到目标主机的sftp的私钥

生成AWS Python Lambda到目标主机的sftp的私钥,python,aws-lambda,sftp,paramiko,pysftp,Python,Aws Lambda,Sftp,Paramiko,Pysftp,我正在创建一个Python AWS Lambda函数,该函数连接到db以将数据提取为CSV,然后将该CSV转换为sftp服务器(abc.example.com)。我使用的是PYSTFP和Paramiko。看起来PySTFP需要一个私钥文件来实现到SFTP主机的无密码连接。如何获取此私钥文件 我们需要在目标SFTP主机上创建公钥/私钥对(ssh-keygen)吗?然后在Lambda函数中使用该键的公共部分 谢谢是的,如果您还没有,那么您必须在sftp主机上使用ssh-keygen创建密钥并使用它

我正在创建一个Python AWS Lambda函数,该函数连接到db以将数据提取为CSV,然后将该CSV转换为sftp服务器(abc.example.com)。我使用的是PYSTFP和Paramiko。看起来PySTFP需要一个私钥文件来实现到SFTP主机的无密码连接。如何获取此私钥文件

我们需要在目标SFTP主机上创建公钥/私钥对(
ssh-keygen
)吗?然后在Lambda函数中使用该键的公共部分


谢谢

是的,如果您还没有,那么您必须在sftp主机上使用
ssh-keygen
创建密钥并使用它

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

参考资料:

是的,如果您还没有,那么您必须在sftp主机上使用
ssh-keygen
创建密钥并使用它

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

参考资料:

只需设置公钥身份验证,方法与对普通(GUI/commandline)SFTP或SSH客户端所做的相同。关于这一点,pysftp/Python/Lambda没有什么特别的

互联网上有无数的指南展示了如何做到这一点。
比如我的文章


然后在Python/pysftp代码中使用私钥:


由于pysftp需要物理文件中的密钥,在AWS Lambda中执行的操作可能会很复杂,如果切换到Paramiko:


(请参阅)

只需按照对普通(GUI/commandline)SFTP或SSH客户端所做的相同方式设置公钥身份验证。关于这一点,pysftp/Python/Lambda没有什么特别的

互联网上有无数的指南展示了如何做到这一点。
比如我的文章


然后在Python/pysftp代码中使用私钥:


由于pysftp需要物理文件中的密钥,在AWS Lambda中执行的操作可能会很复杂,如果切换到Paramiko:


(请参阅)

谢谢马丁。我已经在SFTP服务器(abc.example.com,这是一个ec2)的用户u1009697下生成了密钥对。它创建2个文件。id_rsa和id_rsa.pub。现在,我将id_rsa.pub文件作为sftp:logger.debug(“创建的sftp对象”)用于lambda函数-
和pysftp.Connection(abc.example.com,username=u1009697,private_key=id_rsa.pub,cnopts=cnopts),但它说SSH错误:不是有效的DSA私钥文件1)您不应该在服务器上生成密钥对(虽然这不是您的主要问题。)2)主要问题是
private\u key
参数显然使用私钥(
id\u rsa
),而不是公钥(
id\u rsa.pub
)。3) 公钥必须转到
授权密钥
文件请按照我在回答中链接的说明进行操作。首先尝试使用一些GUI/commandline SFTP/SSH客户端设置身份验证。然后试着给客户编码。非常感谢Martin的指导,我现在已经准备好了!!谢谢你,马丁。我已经在SFTP服务器(abc.example.com,这是一个ec2)的用户u1009697下生成了密钥对。它创建2个文件。id_rsa和id_rsa.pub。现在,我将id_rsa.pub文件作为sftp:logger.debug(“创建的sftp对象”)
用于lambda函数-
和pysftp.Connection(abc.example.com,username=u1009697,private_key=id_rsa.pub,cnopts=cnopts),但它说SSH错误:不是有效的DSA私钥文件1)您不应该在服务器上生成密钥对(虽然这不是您的主要问题。)2)主要问题是
private\u key
参数显然使用私钥(
id\u rsa
),而不是公钥(
id\u rsa.pub
)。3) 公钥必须转到
授权密钥
文件请按照我在回答中链接的说明进行操作。首先尝试使用一些GUI/commandline SFTP/SSH客户端设置身份验证。然后试着给客户编码。非常感谢Martin的指导,我现在已经准备好了!!我已经在SFTP服务器(abc.example.com,这是一个ec2)的用户u1009697下生成了密钥对。它创建2个文件。id_rsa和id_rsa.pub。现在,我将id_rsa.pub文件作为sftp:logger.debug(创建了sftp对象)用于lambda函数-
(abc.example.com,username=u1009697,private_key=id_rsa.pub,cnopts=cnopts)
但上面显示SSH错误:不是有效的DSA私钥文件您必须使用id\u rsa而不是id\u rsa.pubI在用户u1009697下的SFTP服务器(abc.example.com,这是一个ec2)上生成了密钥对。它创建2个文件。id_rsa和id_rsa.pub。现在,我将id_rsa.pub文件作为sftp:logger.debug(“创建的sftp对象”)
用于lambda函数-
和pysftp.Connection(abc.example.com,username=u1009697,private_key=id_rsa.pub,cnopts=cnopts),但它显示SSH错误:不是有效的DSA私钥文件您必须使用id_rsa not id_rsa.pub