Мне нужно автоматизировать 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, поэтому ничего не будет напечатано на дисплее.