python-3.x - Paramiko、私钥和 cron
问题描述
我在尝试使用私钥设置 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't access private key 但它没有用。
这个问题Paramiko: "not a valid RSA private key file"不适用,因为该脚本在从该用户的普通终端启动时有效。它与 cron 一起失败。
有什么线索吗?
Python3 帕拉米科 2.6.0 Ubuntu 20.4.2 LTS
解决方案
感谢 Martin Prikryl,在激活 paramiko 日志记录后,它报告了一个关于未实现的错误,我在此结束:
在将 SFTP 与 Paramiko 连接时遇到糟糕的未处理类型 3(“未实现”)
通过根据该帖子应用私钥(并根据其他帖子进行转换:Paramiko:“不是有效的 RSA 私钥文件”注意我使用的是 Paramiko 2.6.0)...
现在它起作用了!
谢谢,马丁!
推荐阅读
- java - 第二个参数类型错误。找到'java.lang.String',需要'android.location.Location'
- javascript - 使用吸气剂会提高性能吗?
- wordpress - 主页上的内部链接问题
- android - delphi embarcadero中用于Debug和Release的不同AndroidManifest.template.xml
- javascript - 将代码从使用 GET 方法重写为使用 POST 方法
- normalization - ojAlgo 有没有办法标准化矩阵?
- javascript - 开始和结束日期 - 向下舍入
- mysql - 如何使用 concat 对查询进行排序?
- java - window.clearFlags(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)不能从片段内部工作
- swift - swift 5中原始字符串和普通字符串之间的差异