Verschillende toetsen om te duwen en te trekken naar git repository

Ik gebruik gitosis om een ​​git-repository op mijn thuisserver te hosten.

Ik heb het ingesteld om drie SSH-sleutels te accepteren: mijn belangrijkste (passphraseless) met lees-/schrijftoegang, mijn wachtwoordzin (waarmee ik meer vertrouwd ben met het plaatsen van servers waarop andere mensen root hebben) met lees-/schrijftoegang, en een derde sleutel met alleen leestoegang.

Het idee is dat op de externe host (die ik niet bezit, dus iemand anders er root op heeft) ik mijn persoonlijke privésleutel en de derde (alleen-lezen) sleutel kan hebben en dan op die machine kan trekken zonder een wachtwoord en druk terug met behulp van de wachtwoordcode.

Gitosis is er goed in en accepteert elke sleutel met de juiste rechten. Maar ik kan de dingen niet laten werken zoals ik wil, als ik beide sleutels gebruik. Ik wijs ernaar in mijn SSH-configuratie - in ~/.ssh/config op de externe host heb ik het volgende:

Host *
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa.passphrase

Als ik trek of kloon, is dat prima - de bewerking is voltooid zonder dat ik om een ​​wachtwoord heb gevraagd. Maar als ik duw krijg ik een bericht dat ik geen toestemming heb. Het heeft duidelijk alleen het eerste sleutelbestand geprobeerd.

Als ik de twee IdentityFile -lijnen verwissel, wordt er om een ​​wachtwoord gevraagd of ik duw of trek. Dus het probeert nog steeds alleen het eerste sleutelbestand.

Is er een manier om het gedrag te krijgen dat ik wil - dat wil zeggen, om het een sleutelbestand te laten gebruiken bij push- en andere schrijfbewerkingen en het andere bij alleen-lezen bewerkingen?

1
Te laat om over te schakelen naar Gitolite? Ik zou het sterk aanbevelen.
toegevoegd de auteur Nic, de bron

1 antwoord

U kunt meerdere afstandsbedieningen instellen om dit te doen. Elke afstandsbediening kan een andere URL hebben. Uw urls kunnen in uw .ssh/config-bestand worden geconfigureerd om naar elke gewenste locatie te wijzen en de gewenste sleutel te gebruiken.

1
toegevoegd
Dat was een goede oplossing. Ik heb pushurl ingesteld op een dummy hostnaam. Vervolgens heb ik een hostsectie toegevoegd aan het SSH-configuratiebestand met dezelfde dummy hostnaam, maar de regel hosthost hosthost.example.com en de relevante regel IdentityFile. Dit werkt geweldig. Bedankt!
toegevoegd de auteur tremby, de bron