Я хотел бы создать автоматический скрипт, который вызывает ssh-keygen
и создает несколько парных / закрытых пар ключей, которые я буду использовать позже. В принципе все работает хорошо с ....
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
... за исключением того, что он запрашивает у меня пароль, который будет шифровать ключи. Это делает - в настоящее время - автоматизацию трудной.
Я мог бы предоставить фразу-пароль через аргумент командной строки -N thepassphrase
, чтобы не отображать подсказку. Тем не менее, я даже не хочу иметь ключи - дополнительно защищенные шифрованием - и хочу, чтобы пары ключей были незашифрованными.
Что является (лучшим) решением этой проблемы?
-q
Вариант , который якобы означает «тихий / бесшумный» действительно все еще не избежать взаимодействия ключевой фразы. Также я не нашел что-то подобное
ssh-keygen ...... -q --no-passphrase
Пожалуйста, не начинайте проповедовать или рассказывать мне о плюсах и минусах «пропущенной фразы», я знаю об этом. В интерактивной форме (не в виде скрипта) пользователь может просто дважды нажать [ENTER], и ключ будет сохранен в виде открытого текста. Это то, что я хочу достичь в сценарии, как это:
#! / Bin / Баш command1 command2 вар = $ (command3) # это не должно останавливать скрипт и запрашивать пароль ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
/tmp/sshkey
уже существует, можно получить запрос на перезапись. Это может быть предотвращено с помощью перенаправления / закрытия стандартного ввода - например, путем добавления0>&-
.Я нашел самый простой способ сделать то, что вы хотите, это (пример с использованием имени файла по умолчанию)
Если
~/.ssh/id_rsa
файл уже существует, команда выйдет без каких-либо изменений.Если нет, вы получите новый ключ в этом имени файла.
В любом случае, вы ничего не перезаписали, и в конце вы знаете, что у вас есть ключ.
источник
cat /dev/zero | ssh-keygen -q -N "" > /dev/null
yes "" | ssh-keygen -N "" >&- 2>&-
Однако работает очень хорошо и ничего не выводит (независимо от того, существует ли уже файл ключа), и не перезаписывает ранее существующий файл ключа.Это сработало для меня:
Опция
-P
пароля и""
пустая фраза.источник
-P <passphrase>
Вариант заключается в предоставлении (старый) пароль. linux.die.net/man/1/ssh-keygenВы можете использовать ожидать, чтобы отправить «ввод» для вас
Но имейте в виду, что если файл / tmp / sshkey уже существует, он потерпит неудачу, поскольку выходные данные команды будут другими.
источник
Я сделал простое эхо перед ssh-keygen. Так
su - <user> -c "echo |ssh-keygen -t rsa"
Это было проверено на Redhat 6
источник
Для другого пользователя, протестированного на Ubuntu 18.04:
источник