我正在创建一个 Python AWS Lambda 函数,该函数连接到 db 以将数据提取为 CSV,然后将该 CSV sftp 到 SFTP 服务器 (abc.example.com) 中。我正在使用 pysftp 和 Paramiko。看起来 pysftp 需要一个私钥文件来实现与 SFTP 主机的无密码连接。如何获取此私钥文件?ssh-keygen我们是否需要在目标 SFTP 主机上创建公钥/私钥对 ( )?然后在 Lambda 函数中使用该密钥的公共部分?
2 回答
MM们
TA贡献1886条经验 获得超2个赞
是的,如果您还没有它,那么您必须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
慕标琳琳
TA贡献1830条经验 获得超9个赞
只需以与普通(GUI/命令行)SFTP 或 SSH 客户端相同的方式设置公钥身份验证。没有什么 pysftp/Python/Lambda 特定的。
互联网上有无数指南展示了如何做到这一点。
例如我的文章设置 SSH 公钥身份验证。
然后在您的 Python/pysftp 代码中使用私钥:
Connect to SFTP with key file using Python pysftp
由于 pysftp 需要物理文件中的密钥,这在 AWS Lambda 中可能很复杂,如果您切换到 Paramiko:
SSH/SCP through Paramiko with key in string
,您还可以在 Python 代码中硬编码密钥 (请参阅pysftp vs. Paramiko )
添加回答
举报
0/150
提交
取消