#python #ssh #paramiko #ssh-keygen
#python #ssh #paramiko #ssh-keygen
Вопрос:
У меня есть 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
by 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
файл.
Аналогично я пытался:
stdin.write("")
stdin.write("")
stdin.write("")
Но это тоже не сработало.
Итак, что я здесь делаю не так?
Кроме того, есть ли какой-либо другой способ ( paramiko
предпочтительно использовать) для создания id_rsa.pub
файла?
Любая помощь приветствуется!
Ответ №1:
Не пытайтесь имитировать пользовательский ввод.
Используйте -f
и -N
переключатели командной строки ssh-keygen
:
ssh-keygen -f keyfile -N ""