2016-03-31 3 views
0

Ich habe ein Konto auf GitHub und benutze es für meine privaten Projekte und auch für die Arbeit an Projekten von mehreren organizations.Wie definieren Sie unterschiedliche Berechtigungen für ein Repository abhängig vom SSH-Schlüssel auf GitHub?

Jetzt möchte ich das private Repository einer Organisation auf dem Server auschecken.
Dazu brauche ich einen SSH-Schlüssel.

Ich könnte meinen privaten Schlüssel auf den Server kopieren, aber es ist eine sehr schlechte Idee ... Eine andere Möglichkeit besteht darin, ein gefälschtes/Bot GitHub-Konto (machine user) zu erstellen, das nur zum Abrufen des Codes auf dem Server verwendet wird . OK, aber es sieht immer noch wie ein Workaround aus.

Ein sauberer Weg wäre, einen neuen privaten Schlüssel, dann einen plublic Schlüssel dafür zu erstellen, ihn zu GitHub hinzuzufügen und dann die Berechtigungen des Benutzers einzuschränken, der mit diesem Schlüssel mit GitHub verbindet (dieser Benutzer sollte zB nur in der Lage sein, aus den Repositories X und Y der Organisation Z) zu ziehen.

Ist es auf GitHub möglich? Wie kann ich Berechtigungen für GitHub-Repositorys abhängig vom SSH-Schlüssel definieren?

+0

Ich bin mir nicht ganz sicher, ob ich dein Problem verstehe. Wenn Sie von s/o Lesezugriff auf ein Repo erhalten möchten, sollten sie Sie hinzufügen und nur Ihre Leseberechtigungen erteilen. Wenn Sie einer anderen Person Lesezugriff auf eines Ihrer Repos gewähren möchten, fügen Sie das Konto dieser Person oder Ihres Unternehmens hinzu und gewähren Sie nur Lesezugriff. – planetmaker

+0

Vielen Dank für Ihren Kommentar! Was ich möchte, ist in der Lage zu sein, (zumindest) den Code aus dem Repository auf GitHub auf den Server zu ziehen, ohne einen [Maschinenbenutzer] zu erstellen (https://developer.github.com/guides/managing-deploy-keys/# Maschinenbenutzer) für den Server. – automatix

+0

Ok, ich verstehe jetzt. Ich denke, für dieses Problem ist die Lösung, genau das zu tun: einen Maschinenbenutzer zu erstellen (das mache ich zumindest). – planetmaker

Antwort

0

Um die Frage zu beantworten: Sie können nicht.

Erklären der Antwort hat mehr mit Sicherheit und Berechtigungen Verwaltung als Git selbst zu tun.

Wenn Sie einen Schritt zurückgehen und sich die Authentifizierungs-/Autorisierungskette ansehen, werden Sie verstehen, warum.

Sie haben ein GitHub-Konto, MyGitHubAccount. Um sich über das Webportal zu authentifizieren, verwenden Sie Ihren Benutzernamen und Ihr Passwort. Um sich über Git + SSH zu authentifizieren, verwenden Sie Ihren SSH-Schlüssel.
Das ist der Schlüssel: Ein geheimer Berechtigungsnachweis, mit dem GitHub Sie als Benutzer von MyGitHubAccount erkennt. Sobald Sie als MyGitHubAccount authentifiziert sind, prüft GitHub, ob Sie aus dem Repository lesen/schreiben dürfen.
Dies ist das Konto mit Lese-/Schreibberechtigungen.

Wenn Sie also andere Berechtigungen verwenden möchten, müssen Sie ein anderes Konto erstellen. So würden Sie es auf jedem anderen System tun, also sehe ich nicht, warum das eine schlechte Lösung wäre.

Der einzige Zweck des SSH-Schlüssels ist es, den Benutzer zu identifizieren. Der Grund, warum Sie mehrere Schlüssel haben können, ist, dass Sie Ihre Schlüssel nicht kopieren sollten, sondern stattdessen einen neuen Schlüssel auf jedem Computer erstellen, mit dem Sie eine Verbindung zu GitHub herstellen möchten. Auf diese Weise können Sie den Schlüssel eines bestimmten Computers widerrufen, wenn dieser beispielsweise gestohlen oder manipuliert wurde.

Verwandte Themen