Ich habe einen Entwicklungs-Git-Server, der auf einem Live-Server bereitgestellt wird, wenn der live
Zweig an verschoben wird. Jeder Benutzer hat sein eigenes Login und daher wird der post-receive
Hook, der die Live-Bereitstellung durchführt, unter seinem eigenen Benutzer ausgeführt.
Da ich nicht möchte, dass die öffentlichen Schlüssel des Benutzers als autorisierte Schlüssel auf dem Remote-Live-Server verwaltet werden, habe ich eine Reihe von Schlüsseln erstellt, die zum Git-System gehören, um sie zu Remote-Live-Servern hinzuzufügen (in dem von post-receive
mir verwendeten Hook $GIT_SSH
um den privaten Schlüssel mit der -i
Option festzulegen).
Mein Problem ist, dass der private Schlüssel des Git-Systems mindestens gruppenlesbar sein muss, da alle Benutzer möglicherweise für die Bereitstellung bereitstellen möchten, und SSH mag dies wirklich nicht.
Hier ist ein Beispiel für den Fehler:
XXXX@XXXX /srv/git/identity % ssh -i id_rsa XXXXX@XXXXX
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa
Ich habe mich umgesehen und erwartet, etwas zu finden, das ssh dazu zwingt, nur die Verbindung herzustellen, aber ich habe nichts als Leute gefunden, die blind gesagt haben, dass Sie nur auf einen einzelnen Benutzer zugreifen dürfen.
quelle
Sie CAN - Gruppe lesbaren Identitätsdateien verwenden, sofern Sie der Besitzer des Schlüssels sind. Stellen Sie also einfach die Identitätsdatei ein, die beispielsweise dem Root-Benutzer gehört, und dann sind alle Benutzer Ihres Git-Repositorys bereit.
Ein schöner Vorteil dabei ist, dass Sie kein Sudo benötigen - die Lösung wird einfacher.
Beachten Sie, dass das ursprüngliche Problem erneut auftritt, wenn Sie root verwenden, um auf Ihr Git-Repo zu pushen.
quelle
Der private Schlüssel muss privat bleiben. Sie sollten niemandem erlauben, es zu lesen.
post-receive
Versuchen Sie im Hook-Skript Folgendes:quelle
ssh-keygen
,ssh-copy-id user@prod
. Auf dem Produkt:chmod 700 ~/.ssh
,chmod 600 ~/.ssh/authorized_keys
.git checkout...
(auf dem Produkt).post-receive
Hook (Dev-Computer) wird von dem Benutzer ausgeführt, der eine Änderung vornimmt (daher unter der Erlaubnis des Benutzers), sodass alle unterschiedliche Schlüssel haben. Ich kann nicht helfen, welcher Benutzer es sein wird. Es gibt zweipost-receive
Hooks auf zwei verschiedenen Servern in Aktion.