Chciałbym stworzyć zautomatyzowany skrypt, który wywołuje ssh-keygen
i tworzy parę kluczy publicznych / prywatnych, których będę używać później. Zasadniczo wszystko działa dobrze z ...
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
... oprócz tego, że prosi mnie o hasło, które szyfruje klucze. To utrudnia automatyzację.
Mogę podać hasło za pomocą argumentu wiersza poleceń -N thepassphrase
, aby nie wyświetlać monitu. Nadal nie chcę mieć kluczy - dodatkowo zabezpieczonych przez szyfrowanie - i chcę, aby klucze były jawnym tekstem.
Jakie jest (najlepsze) rozwiązanie tego problemu?
-q
Opcja, która podobno oznacza „quiet / silent” ma wciąż nie uniknąć interakcji hasłem. Nie znalazłem też czegoś takiego
ssh-keygen ...... -q --no-passphrase
Proszę, nie zaczynajcie wygłaszać kazań i wykładów na temat zalet i wad „brakującego hasła”, jestem tego świadomy. W interaktywnej formie (nie jako skrypt) użytkownik może po prostu dwukrotnie nacisnąć [ENTER], a klucz zostanie zapisany jako zwykły tekst. Oto, co chcę osiągnąć w skrypcie takim jak ten:
#! / bin / bash polecenie 1 polecenie 2 var = $ (polecenie3) # nie powinno to zatrzymać skryptu i poprosić o hasło ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
/tmp/sshkey
już istnieje, pojawia się monit o zastąpienie. Można temu zapobiec poprzez przekierowanie / zamknięcie standardowego wejścia - np. Poprzez dodanie0>&-
.Najprostszym sposobem na zrobienie tego, co chcesz, jest to (przykład z użyciem domyślnej nazwy pliku)
Jeśli
~/.ssh/id_rsa
plik już istnieje, polecenie zostanie zakończone bez modyfikowania czegokolwiek.Jeśli nie, otrzymasz nowy klucz w tej nazwie pliku.
Tak czy inaczej, niczego nie nadpisałeś, a na końcu wiesz, że masz klucz.
źródło
cat /dev/zero | ssh-keygen -q -N "" > /dev/null
yes "" | ssh-keygen -N "" >&- 2>&-
działa jednak dobrze i nie generuje niczego (niezależnie od tego, czy plik klucza już istnieje) i nie zastępuje wcześniej istniejącego pliku klucza.To działało dla mnie:
Jest
-P
to opcja hasła i""
jest pustym hasłem.źródło
-P <passphrase>
Opcja jest dostarczenie (stary) hasło. linux.die.net/man/1/ssh-keygenMożesz użyć opcji „wyślij” dla siebie
Należy jednak pamiętać, że jeśli plik / tmp / sshkey już istnieje, zakończy się niepowodzeniem, ponieważ wynik działania polecenia będzie inny.
źródło
Zrobiłem proste echo przed ssh-keygen. Więc
su - <user> -c "echo |ssh-keygen -t rsa"
Zostało to przetestowane na Redhat 6
źródło
Dla innego użytkownika przetestowany na Ubuntu 18.04:
źródło