Ich muss einen SSH-Gruppenschlüssel einrichten, der zum Veröffentlichen in einem Remote-Git-Repository verwendet wird.
Da git (und vermutlich auch viele andere Programme) die Definition eines Flag-Lags nicht erlaubt, ssh -i
stammt die Information, welcher Schlüssel verwendet wird, aus den Standardeinstellungen oder aus dem, was in~/.ssh/config
Dies würde eine neue Verwaltungsaufgabe für Benutzer erfordern, die über diese Berechtigung verfügen müssen (d. h. die richtigen Einträge in ihrer ~/.ssh/config
Datei hinzufügen).
Gibt es eine Möglichkeit, mir diesen Aufwand zu sparen? Ich konnte keine Umgebungsvariable finden, die von OpenSSH gelesen werden könnte, da dies eine Lösung wäre (indem ich ein Wrapping-Skript erstelle, das das Erforderliche tut).
Antwort1
Die Antwort lautet also wie folgt (danke, Tink):
Die Verwendung eines SSH-Agenten zum Speichern des Schlüssels funktioniert immer. Dazu können Sie den Aufruf in ein Skript kapseln:
#!/bin/bash
key=$1
[[ "$SSH_AGENT_PID" ]] || eval $(ssh-agent)
ssh-add $key
#...the rest of the script...
Im speziellen Fall von Git gibt es eine GIT_SSH
Umgebungsvariable, die auf den Befehl verweist, der anstelle von ssh aufgerufen wird. Daher ist es möglich, ssh
mit dem -i
Flag ein Problem zu verursachen.
Nur zur Warnung, dies ist ein Proof of Concept. Sie müssen sicherstellen, dass die Umgebung nach dem Laden des Skripts nicht beeinträchtigt wird (d. h. wenn ein Agent vorhanden war und der Schlüssel nicht geladen wurde, müssen Sie den Schlüssel entfernen, wenn kein Agent vorhanden war, entfernen Sie den Agenten usw.).