Ssh-key nur für mercurial pulls / clones erstellen

4366
goathens

Ich möchte einen ssh-Schlüssel (ohne Kennwort) erstellen, den ich an entfernte Benutzer weitergeben kann, damit sie einen Hg-Pull oder einen Hg-Klon meiner Repositorys ausführen können. Ich bin so weit gekommen, eine ssh-Taste zu erstellen, die nur den Befehl / usr / bin / hg verwendet. Dies funktioniert jedoch nicht, wenn Sie die Clone- oder Pull-Befehle verwenden, da die Befehlszeichenfolge nicht mit dem Befehl mercurial des Remote-Befehls übereinstimmt verwendet intern.

Ist es möglich, die Befehle zu erhalten, die mercurial auf dem Remote-Host ausführt, wenn Sie Folgendes ausführen:

hg clone ssh://user@host//path-to-repo hg pull ssh://user@host//path-to-repo 

Und kann ich zuverlässig ein paar Befehlszeichenfolgen entwickeln, die alle meine Basen abdecken? Wenn sie mit einer bestimmten Revision ziehen würden, würde dies einen anderen Fernbefehl über die ssh verwenden?

3

3 Antworten auf die Frage

5
Ry4an Brase

Mercurial enthält ein praktisches Skript, das für genau diese Art des eingeschränkten Zugriffs eingerichtet ist. Das Skript befindet sich wahrscheinlich bereits auf Ihrem Server und heißt hg-ssh. Sie finden es jedoch auch hier: http://www.selenic.com/repo/hg-stable/raw-file/tip/contrib/hg-ssh

Um es zu verwenden, fügen Sie einfach eine Zeile in Ihre /home/user/.ssh/authorized_keysDatei ein:

command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ... 

Dadurch wird sichergestellt, dass Personen mit diesem Schlüssel nur mercurial (keine Shell) und nur für die von Ihnen aufgelisteten Repos verwenden können.

2
Takayuki SHIMIZUKAWA

Wenn Sie also keinen Push ausführen möchten, empfehle ich, zusätzlich zur Antwort von Ry4an die Option --read-only für den Befehl hg-ssh zu verwenden.

0
Alasdair

Melden Sie sich bei Bitbucket an und klonen Sie Ihr Repository darauf.

Anschließend können Sie Bereitstellungsschlüssel erstellen und an Ihre Benutzer verteilen.

Alternativ können Sie Ihre Benutzer dazu veranlassen, sich bei Bitbucket anzumelden, und geben Sie ihnen Leserechte. Sie können dann über https oder ssh auf das Repository zugreifen, wenn sie ihren öffentlichen Schlüssel hochladen.

Dies wurde geändert in - beliebig viele private Repositorys. viraptor vor 13 Jahren 0