Automatyzacja naciśnięć klawiszy „enter” dla skryptu bash generującego klucze ssh


102

Chciałbym stworzyć skrypt, który po prostu działa ssh-keygen -t rsa. Ale jak przejść do niego 3 razy wejść?

Odpowiedzi:


218

Próbować:

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

-N "" każe mu użyć pustego hasła (takiego samego jak dwa wpisy w interaktywnym skrypcie)

-f my.keykaże mu przechowywać klucz w my.key(zmień według własnego uznania).

Całość działa bez konieczności podawania jakichkolwiek klawiszy enter :)

Aby wysłać wpisy do interaktywnego skryptu:

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

4
To jest poprawna odpowiedź, ale nadal chciałbym wiedzieć, jak naciskać enter więcej niż jeden raz - w innym skrypcie.
Sławosz

3
Jasne - zaktualizowałem odpowiedź, aby zawierała sposób wysyłania nowych linii do skryptu.
Rudu,

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa nie działa dla mnie, czy możesz spróbować samemu? Mija tylko pierwsze wejście. Ale na innym prostym skrypcie to działa.
Sławosz

1
Przetestowałem go, zanim go opublikowałem - działa dobrze, chociaż wygląda na to, że ssh-keygenzostał upuszczony kreska - czy dodałeś to z powrotem? {edytowano} Ponadto - nie możesz uruchomić skryptu więcej niż jeden raz - zmienia pytania, aby potwierdzić, że chcesz nadpisać istniejący _rsaplik klucza (więc trzeba podać ay lub n)
Rudu

13
Zalecałbym użycie yes ""zamiast echo -e "\n\n\n"( yeswyświetla dowolny podany argument [lub domyślnie "y"] w nieskończoność - idealne w sytuacjach, w których chce się po prostu udzielić odpowiedzi "tak" na cokolwiek program może poprosić). yesjest krótszy i powinien ssh-keygenzawsze dodać pytanie, na które również zostanie automatycznie udzielona odpowiedź. :)
zrajm


1

Zgadzam się z Michelem Marro, tyle że potrzeba trochę więcej: jeśli plik już istnieje, nadal będzie interaktywny z pytaniem, czy musi go nadpisać.

Skorzystaj z odpowiedzi na to pytanie .

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

Przekierowanie do wartości null jest konieczne, aby wyciszyć wiadomość zastępującą.


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

Ech? To faktycznie ma mniej nowych linii niż jedna z odpowiedzi, które twierdzisz, że nie działają (i to na podzbiorze platform, na których echo -eemituje coś innego niż -ew ogóle, co nie ssh-keygenjest wszędzie dostępne).
Charles Duffy

... żeby było jasne, używam programu produkcyjnego ssh-keygen -N ''jako części zautomatyzowanej procedury instalacji i nie czyta on w ogóle stdin, więc nie ma potrzeby podłączania do niego echo( żadnego echo wariantu). (To prawda, uważam, że stdin jest powiązany z /dev/nullmoim przypadkiem użycia w produkcji; może być inne zachowanie, gdy jest ono dołączone do urządzenia TTY, ale lepszą odpowiedzią jest </dev/nullraczej niż echo ... |)
Charles Duffy

1
Monituje mnie o nazwę pliku: $ 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

Zalecane jest używanie ed25519 ze względu na bezpieczeństwo i wydajność.

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

tutaj

-o Format klucza OpenSSH zamiast starszego PEM (wymaga OpenSSH 6.5+)

-a Liczba testów pierwszości podczas badań przesiewowych kandydatów DH-GEX

-t Typ klucza (ed25519, RSA, DSA itp.)

-f /mypath/bla Ścieżka i nazwa pliku wyjściowego

-N "" Użyj pustego hasła

i yes "y"bez interakcji.

Wygeneruje dwa pliki

/mypath/bla
/mypath/bla.pub

gdzie blaplik jest prywatny i bla.pubpubliczny.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.