仅作为cron作业的paramiko无效RSA私钥

时间:2018-12-17 17:44:03

标签: python cron paramiko openssh

Paramiko脚本在使用id_rsa的交互式终端上运行良好。当作为cron作业运行时,它突然发现id_rsa无效。测试777权限已在所有相关文件上设置为无效。日志显示该作业正在以适当的用户身份运行。

paramiko.ssh_exception.SSHException: not a valid RSA private key file

因此,似乎if块末尾的语句仅作为cron作业得到满足: `

  def _read_private_key(self, tag, f, password=None):
            lines = f.readlines()
            start = 0
            beginning_of_key = "-----BEGIN " + tag + " PRIVATE KEY-----"
            while start < len(lines) and lines[start].strip()
                                                 != beginning_of_key:
            start += 1
        if start >= len(lines):
            raise SSHException("not a valid " + tag + " private key file")
` 

任何见解表示赞赏。

编辑:我的代码加载密钥 try: client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.WarningPolicy) client.connect(hostname = '<target>', key_filename = '/home/user/.ssh/id_rsa',username='root')

1 个答案:

答案 0 :(得分:2)

我遇到了类似的情况,而ssh-keygen帮助了我。您应该复制id_rsa并使用ssh-keygen将其转换为RSA类型,然后将该路径提供给“ key_filename”

要将“ BEGIN OPENSSH私钥”转换为“ BEGIN RSA私钥”

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa