paramiko только в качестве задания cron не действителен закрытый ключ RSA - PullRequest
0 голосов
/ 17 декабря 2018

Скрипт Paramiko отлично работает с интерактивного терминала, использующего id_rsa.При запуске в качестве задания cron он неожиданно обнаруживает, что id_rsa является недействительным.Тест 777 разрешений были установлены для всех связанных файлов безрезультатно.Журналы показывают, что задание запускается от имени соответствующего пользователя.

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

Итак, кажется, что если оператор в конце блока выполняется только как задание 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 голосов
/ 14 июня 2019

Я столкнулся с подобной ситуацией, и ssh-keygen приходит мне на помощь.Вы должны сделать копию id_rsa и преобразовать ее в тип RSA с помощью ssh-keygen, а затем присвоить этот путь «key_filename»

Для преобразования «BEGIN OPENSSH PRIVATE KEY» в «BEGIN RSA PRIVATE KEY»

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