Ich möchte ein automatisiertes Skript ssh-keygen
erstellen, das einige Pub / Private-Schlüsselpaare aufruft und erstellt, die ich später verwenden werde. Im Prinzip funktioniert alles einwandfrei mit ...
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
... außer dass ich nach der Passphrase gefragt werde, die die Schlüssel verschlüsseln würde. Dies erschwert die Automatisierung.
Ich könnte eine Passphrase über das Befehlszeilenargument bereitstellen -N thepassphrase
, damit die Eingabeaufforderung nicht angezeigt wird. Trotzdem möchte ich nicht einmal die Schlüssel - zusätzlich durch Verschlüsselung gesichert - haben und möchte , dass die Schlüsselpaare Klartext sind.
Was ist eine (beste) Lösung für dieses Problem?
Die -q
Option, die angeblich "leise / still" bedeutet, vermeidet die Interaktion mit der Passphrase immer noch nicht. Auch so etwas habe ich nicht gefunden
ssh-keygen ...... -q --no-passphrase
Bitte fangen Sie nicht an, über das Für und Wider der "fehlenden Passphrase" zu predigen oder mich zu belehren, mir ist das bewusst. In der interaktiven Form (nicht als Skript) kann der Benutzer einfach zweimal [ENTER] drücken und der Schlüssel wird als Klartext gespeichert. Folgendes möchte ich in einem Skript wie diesem erreichen:
#! / bin / bash befehl1 befehl2 var = $ (command3) # Dies sollte das Skript nicht stoppen und nach dem Passwort fragen ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
/tmp/sshkey
bereits vorhanden, wird eine Aufforderung zum Überschreiben angezeigt. Dies kann durch Umleiten / Schließen von stdin - zB durch Hinzufügen - verhindert werden0>&-
.Der einfachste Weg, den ich gefunden habe, um das zu tun, was Sie wollen, ist der folgende (Beispiel mit dem Standarddateinamen)
Wenn die
~/.ssh/id_rsa
Datei bereits vorhanden ist, wird der Befehl ohne Änderung beendet.Wenn nicht, erhalten Sie einen brandneuen Schlüssel in diesem Dateinamen.
In jedem Fall haben Sie nichts überschrieben und am Ende wissen Sie, dass Sie einen Schlüssel haben.
quelle
cat /dev/zero | ssh-keygen -q -N "" > /dev/null
yes "" | ssh-keygen -N "" >&- 2>&-
Funktioniert jedoch einwandfrei und gibt nichts aus (unabhängig davon, ob bereits eine Schlüsseldatei vorhanden ist oder nicht) und überschreibt keine zuvor vorhandene Schlüsseldatei.Das hat bei mir funktioniert:
Das
-P
ist die Passwort - Option und""
ist das leere Passwort.quelle
-P <passphrase>
auch die (alte) Passphrase eingeben. linux.die.net/man/1/ssh-keygenSie können erwarten, die "Enter" für Sie zu senden
Beachten Sie jedoch, dass die Datei / tmp / sshkey fehlschlägt, wenn sie bereits vorhanden ist, da sich die Ausgabe des Befehls unterscheidet.
quelle
Ich habe ein einfaches Echo vor ssh-keygen gemacht. Damit
su - <user> -c "echo |ssh-keygen -t rsa"
Dies wurde auf Redhat 6 getestet
quelle
Für einen anderen Benutzer, der unter Ubuntu 18.04 getestet wurde:
quelle