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的主要内容,如果未能解决你的问题,请参考以下文章