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')
答案 0 :(得分:2)
我遇到了类似的情况,而ssh-keygen帮助了我。您应该复制id_rsa并使用ssh-keygen将其转换为RSA类型,然后将该路径提供给“ key_filename”
要将“ BEGIN OPENSSH私钥”转换为“ BEGIN RSA私钥”
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa