Автоматизація натискання клавіш "enter" для створення скриптів bash скрипту


101

Я хотів би створити сценарій, який просто працює ssh-keygen -t rsa. Але як пройти до нього 3 рази входити?

Відповіді:


217

Спробуйте:

ssh-keygen -t rsa -N "" -f my.key

-N "" говорить йому використовувати порожню парольну фразу (те саме, що два входи в інтерактивному сценарії)

-f my.keyповідомляє йому зберігати ключ my.key(змінювати, як вважаєте за потрібне).

Вся справа працює без необхідності вводити будь-які клавіші введення :)

Для надсилання записів до інтерактивного сценарію:

echo -e "\n\n\n" | ssh-keygen -t rsa

4
Це правильно, але я все ж хотів би знати, як натиснути клавішу Enter більше одного разу - іншим сценарієм.
Sławosz

3
Звичайно, оновлено відповідь, щоб вказати, як надсилати нові рядки до сценарію.
Руду

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa не працює для мене, чи можете ви спробувати самі? Він проходить лише перший вхід. Але на іншому, простому сценарії він працює.
Sławosz

1
Я перевірив його перед тим, як розмістив його - він працює чудово, хоча, схоже, тире з ssh-keygenпадіння - ти додав це назад? {edited} Крім того, - ви не можете запускати сценарій не один раз - він змінює питання, щоб підтвердити, чи хочете ви перезаписати наявний _rsaфайл
файлів ключів

13
Я б рекомендував використовувати yes ""замість echo -e "\n\n\n"( yesвиводить будь-який аргумент [або "за замовчуванням") у нескінченності - ідеально підходить для таких ситуацій, коли потрібно просто надати відповідь "так" на все, що може запропонувати програма). yesкоротше, і ssh-keygenколи-небудь слід додати запитання, на яке також буде відповідено автоматично. :)
zrajm


1

Погодьтеся з Мішелем Марро, за винятком того, що йому потрібно ще трохи: Якщо файл вже існує, він все ще буде інтерактивним, запитуючи, чи потрібно його перезаписати.

Скористайтеся відповіддю на це запитання .

yes y | ssh-keygen -q -t rsa -N '' >/dev/null

Перенаправлення на null необхідне, щоб заглушити перезаписане повідомлення.


0
echo -e "\n"|ssh-keygen -t rsa -N ""

Так? Насправді в ньому є менше нових рядків, ніж один із відповідей, на який ви стверджуєте, що не працює (і це підмножина платформ, де echo -eвипускається щось інше, ніж -eзовсім, що є не скрізь ssh-keygen).
Чарльз Даффі

... щоб було зрозуміло, я використовую виробництво ssh-keygen -N ''як частину автоматизованої процедури встановлення, і він зовсім не читає stdin, тому немає необхідності в echo( будь-якому echo варіанті), вкладеному в нього. (Зрозуміло, я вважаю, що stdin пов'язаний з /dev/nullмоїм випадком використання виробництва; могло бути інакше поведінка, коли він приєднаний до TTY, але краще відповідь, </dev/nullа не echo ... |)
Чарльз Даффі,

1
Це спонукає мене до імені файлу: $ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
Mannix

0

Для безпеки та працездатності рекомендується використовувати ed25519 .

yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""

тут

-o Формат ключів OpenSSH замість старих PEM (потрібен OpenSSH 6.5+)

-a Кількість тесту на первинність під час відбору кандидатів на DH-GEX

-t Тип ключа (ed25519, RSA, DSA тощо)

-f /mypath/bla Шлях та ім'я файлу виводу

-N "" Використовуйте порожню прохідну фазу

і yes "y"без взаємодії.

Він створить два файли

/mypath/bla
/mypath/bla.pub

де blaфайл приватний і bla.pubє загальнодоступним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.