Выполнение ssh-keygen автоматически с Paramiko

1

У меня есть lxd контейнер master, который имеет IP 10.154.151.8. Я хочу выполнить ssh-keygen на нем через ssh с моей машины. То есть,

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.154.151.8',username='root')
stdin,stdout,stderr = ssh.exec_command('ssh-keygen')

Проблема, с которой я здесь сталкиваюсь, заключается в том, что после того, как дана команда ssh-keygen, задаются местоположение и пароль (два раза). Все, что я обычно делаю, это нажимаю enter три раза, когда в интерактивной оболочке. Но здесь, так как я связан с master по ssh, я не могу этого сделать. Выход:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/rohit/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/rohit/.ssh/id_rsa.
Your public key has been saved in /home/rohit/.ssh/id_rsa.pub.
The key fingerprint is:

Итак, я попытался сделать:

stdin.write("\n")
stdin.write("\n")
stdin.write("\n")

Но это не id_rsa.pub файл id_rsa.pub.

Точно так же я пытался:

stdin.write("") 
stdin.write("") 
stdin.write("") 

Но это тоже не сработало.

Итак, что я здесь делаю не так?

Кроме того, есть ли другой способ (предпочтительно с использованием paramiko) для генерации файла id_rsa.pub?

Любая помощь приветствуется!

Теги:
ssh
paramiko

1 ответ

1
Лучший ответ

Не пытайтесь симулировать пользовательский ввод.

Используйте -f командной строки -f и -N ssh-keygen:

ssh-keygen -f keyfile -N ""
  • 1
    Спасибо! @MartinPrikryl

Ещё вопросы

Сообщество Overcoder
Наверх
Меню