Ich möchte ganz ssh-add /path/to/special_key
oben in ein Skript schreiben. Dies funktioniert einwandfrei, fordert jedoch immer zur Eingabe der Passphrase auf. Dies ist seltsam und ein wenig ärgerlich, da immer noch nach der Passphrase gefragt wird, auch wenn ssh-add -l
der Schlüssel bereits hinzugefügt wurde.
Gibt es eine Möglichkeit, dies mitzuteilen: "Fügen Sie diesen Schlüssel hinzu und fragen Sie nach der Passphrase, falls sie noch nicht hinzugefügt wurde, andernfalls tun Sie nichts"?
shell-script
ssh
ssh-agent
Darren Cook
quelle
quelle
Antworten:
Ich sehe keine Optionen für ssh-add, die zum Erreichen des gewünschten Ergebnisses beitragen, aber es ist ziemlich einfach, dies zu umgehen, da Sie sich insbesondere mit einem Schlüssel befassen.
Nimm zuerst den Fingerabdruck für deinen special_key:
Nehmen wir an, dieser Fingerabdruck sieht aus wie 6d: 98: ed: 8c: 07: 07: fe: 57: bb: 19: 12: 89: 5a: c4: bf: 25
ssh-add -l
Überprüfen Sie dann oben in Ihrem Skript, ob dieser Schlüssel geladen ist, bevor Sie zum Hinzufügen aufgefordert werden:Sie können dies alles in einer Zeile zusammenfalten, wenn Sie möchten:
quelle
ssh-keygen
(schließlich möchte ich keine Schlüssel generieren), und benutze stattdessen den Schlüsselpfad:ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ssh-keygen
In der Antwort wird kein Schlüssel generiert - wiessh-add -l
in Ihrem Beispiel wird tatsächlich nichts hinzugefügt. Flags ändern das Verhalten der Befehle, sodass es nicht genau mit dem Namen übereinstimmt. Beachten Sie, dass sich diese Versionen funktional unterscheiden. Wenn sich die Überprüfung anhand des Pfads und des Schlüssels an diesem Pfad ändert, wird sie von Ihrer Version nicht erfasst. Die Version in der Antwort würde auch vorhandene Schlüssel erkennen, unabhängig davon, von wo sie geladen wurden.Es gibt keine direkte Möglichkeit, nur mithilfe von zu überprüfen,
ssh-add
aber Sie könnenssh-keygen
einige Skripts zum Überprüfen verwenden.Das Obige würde dann gedruckt,
yes
wenn der durch die Datei dargestellte Fingerabdruck/path/to/special_key
inssh-add -l
der Ausgabe vorhanden wäre.Beispiel
Wo der Inhalt der Ausgabe von so
ssh-keygen -lf /path/to/special_key
aussieht:Und wir verwenden awk {print $ 2}, um nur die 2. Spalte auszuwählen, die den Fingerabdruck enthält, dh:
Verweise
quelle
Möglicherweise haben Sie bestimmte Gründe für die
ssh-add
explizite Verwendung. Wenn Sie jedoch nur möchten, dass Sie bei der ersten Verwendung des Schlüssels zur Eingabe Ihrer Passphrase aufgefordert werden, jedoch nicht danach, hat openssh eine einfachere Lösung:Tragen Sie
AddKeysToAgent yes
Ihre.ssh/config
Akte ein.quelle
ssh-add -K FILE
funktionierte gut für mich auf dem Mac.Es werden weiterhin die Zeilen "Identität hinzugefügt:" angezeigt, es wird jedoch keine Passphrase abgefragt.
Aus der Manpage:
quelle