Paramiko、私钥和 cron

Posted

技术标签:

【中文标题】Paramiko、私钥和 cron【英文标题】:Paramiko, private keys and cron 【发布时间】:2021-10-29 07:29:19 【问题描述】:

我在尝试使用私钥设置 paramiko scp 时遇到了一些问题。

我认为这个问题与 paramiko 本身并没有太大关系,但事实上这是在 Cron 中启动的(用户 cron (crontab -e))。

所以脚本可以在普通终端上运行,但不能在 cron 上运行。在调用方法 connect 时,我尝试指定私钥的确切位置(key_filename="/home/myuser/.ssh/id_rsa")。它返回以下错误:“不是有效的 RSA 私钥文件”。

另一方面,在 cron 中,我尝试声明要使用的终端:

SHELL=/bin/bash
PATH=... (all the typical values)
HOME=/home/myuser

还尝试在启动任务之前获取 $HOME/profile。

它总是失败。

要么让 cron 执行环境将所有变量都作为普通的 bash,要么能够正确地向 paramiko 指定私钥的位置,但我尝试的所有方法都不起作用。

我也试过了:Paramiko can not access private key 但它不起作用。

这个问题Paramiko: "not a valid RSA private key file" 不适用,因为该脚本在从该用户的普通终端启动时有效。它因 cron 而失败。

有什么线索吗?

Python3 帕拉米科 2.6.0 Ubuntu 20.4.2 LTS

【问题讨论】:

【参考方案1】:

感谢 Martin Prikryl,在激活 paramiko 日志记录后,报告了一个关于未实现的错误,我在此结束:

Getting Oops, unhandled type 3 ('unimplemented') while connecting SFTP with Paramiko

通过根据该帖子应用私钥(并根据其他帖子进行转换:Paramiko: "not a valid RSA private key file" 注意我使用的是 Paramiko 2.6.0)...

现在可以了!!

谢谢,马丁!

【讨论】:

是路径的问题,可以通过指出私钥在哪里来解决。为此,对于我上面指定的 paramiko 版本,您需要使用其他链接中定义的格式的密钥。 这个答案没有解释为什么它在 cron 中起作用。 路径有问题,cron 可以访问。参见例如:***.com/questions/2388087/… 正如我之前所说,您可以使用绝对路径指示他们的私钥在 paramiko 的位置,并根据版本根据上面的链接修改格式。这样它就可以工作了,并且由于上述原因,它可以与 cron 一起使用 所以在你的回答中说出来。

以上是关于Paramiko、私钥和 cron的主要内容,如果未能解决你的问题,请参考以下文章

.pem 文件是不是同时包含私钥和公钥?

在文件中读取私钥和公钥

获取 X509Certificate2 私钥和公钥

Javascript ECDSA 获取私钥和​​公钥?

存储/检索 PGP 私钥和密码的安全方法?

如何使用 web3 创建私钥和公钥?