Автоматизируйте ssh-keygen -t rsa, чтобы он не запрашивал кодовую фразу

Мне нужно автоматизировать ssh-keygen -t rsa без пароля, т.е. ввести в ssh-keygen -t rsa строке.
Как я могу сделать это из сценария оболочки?

Ответ 1

Чтобы создать ключевую пару SSH без запроса фраз, вы можете сделать следующее:

$ ssh-keygen -f id_rsa -t rsa -N ''

Ответ 2

Если вам нужно сделать это из PowerShell в Windows, используйте:

ssh-keygen -f $Name -t rsa -N '""'

обратите внимание, что вы также должны убедиться, что каталог git bin находится на вашем пути:

$sshPath = "<path>\git\bin\"

$env:path += ";$sshPath"

Затем использовать его в PoshGit это просто:

Add-SshKey "<path>\.shh\KeyFilename"

Ответ 3

$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''

Ответ 4

Просто исправление ответа 2... Я узнал, что в моей системе OL и RHEL имя файла должно быть id_rsa, а не id.rsa.

Итак, в системе OL или RHEL команда будет следующей:

$ ssh-keygen -f id_rsa -t rsa -N ''

Ответ 5

Как насчет:

ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''

Как отмечено в man ssh-keygen:

SYNOPSIS
     ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
(...)
      -q      Silence ssh-keygen.

(то есть с пакетом openssh-client в Debian 9.4 stretch: OpenSSH_6.7p1 Debian-5+deb8u4)

Ответ 6

$ printf '\n' | ssh-keygen -N ''

Ответ 7

Мне нужно было автоматизировать в bash script команду ssh-keygen и окончательный ответ, который хорошо работает для меня:

echo -e "\n" | ssh-keygen -N "" &> /dev/null

Команда echo с -e интерпретирует "\n" как клавишу Enter, но не работает с парольной фразой. Затем, используя опцию -N "" (пустая кодовая фраза), пароль будет пустым и ничего не потребует. & > /dev/null отправит 'stdout' и 'stderr' в /dev/null, поэтому ничего не будет напечатано на дисплее.