为 AWS Python Lambda 生成私钥以 sftp 进入目标主机

Generate private key for AWS Python Lambda to sftp into target host

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

我们是否需要在目标 SFTP 主机上创建 public/private 密钥对 (ssh-keygen)?然后在 Lambda 函数中使用该键的 public 部分?

谢谢

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

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

只需设置一个 public 密钥身份验证,就像对普通 (GUI/commandline) SFTP 或 SSH 客户端执行此操作一样。没什么pysftp/Python/Lambda-specific。

互联网上有无数的指南展示了如何做到这一点。
比如我的文章Set up SSH public key authentication.


然后在您的 Python/pysftp 代码中使用私钥:
Connect to SFTP with key file using Python pysftp


由于 pysftp 需要物理文件中的密钥,在 AWS Lambda 中做起来可能很复杂,如果切换到 Paramiko,您也可以在 Python 代码中硬编码密钥:

(参见