Een andere privé SSH-sleutel gebruiken voor Git Shell-opdrachten

0
59

Het gebruik van SSH-sleutels is veiliger dan wachtwoorden, en dat geldt voor Git als goed. In tegenstelling tot een wachtwoord is het echter moeilijker om uw SSH-sleutel te wijzigen of meerdere sleutels te beheren. Door je SSH-configuratie te bewerken, kun je verbinding maken met meerdere Git-opslagplaatsen met verschillende sleutels.

Hoe werkt SSH met Git?

Git gebruikt niet alleen je privésleutel om te authenticeren wanneer je SSH gebruikt in plaats van HTTPS, het brengt in feite een echte SSH-verbinding tot stand met de externe server. Het doet dit in stilte, dus je bent je misschien niet bewust van de opdrachten die het uitvoert, maar het gebruikt ssh onder de motorkap.

Omdat het je standaard ssh-opdracht gebruikt, zal het doen alsof je het zelf hebt uitgevoerd en je standaardsleutel gebruiken in ~/.ssh/id_rsa. Dit is waarschijnlijk niet wat je wilt als je dit hier leest, dus om het te veranderen, moet je de configuratie van SSH aanpassen, niet die van Git.< /p>

Een nieuwe SSH-sleutel maken

Je hebt er in de eerste plaats een nodig om dit te doen, en dit is vrij eenvoudig. Voer gewoon ssh-keygen uit en geef een nieuwe sleutelnaam op met de vlag -f. Hiermee wordt een privésleutel en een openbare sleutel gemaakt met de extensie .pub.

ssh-keygen -t rsa -f ~/.ssh/github

Bewerken ~/.ssh/config

SSH’s configuratiebestand maakt het mogelijk om “Hosts” die overeenkomen op basis van waarmee u verbinding maakt en wijziging van het bestand dat ssh gebruikt toestaan.

Host github Hostnaam github.com IdentityFile ~/.ssh/id_rsa.github IdentitiesOnly yes Advertisement

Hierdoor kun je een andere SSH-sleutel gebruiken dan je primaire voor alle verzoeken die naar github.com gaan, maar wat als je twee verschillende sleutels wilt gebruiken voor afzonderlijke Git-repositories? Bijvoorbeeld een voor uw werkaccount en een voor uw persoonlijke account.

Nou, u zult twee configuraties met verschillende namen moeten definiëren, met dezelfde host:

Host persoonlijk Hostnaam github.com IdentityFile ~/.ssh/githubpersonal IdentitiesOnly ja Hostwerk Hostnaam github.com IdentityFile ~/.ssh/githubwork IdentitiesOnly ja

Meestal zou dit resulteren in een conflicterende configuratie, maar Git biedt een manier om dit te omzeilen. Als je een externe repository zoals Github hebt gekoppeld aan je lokale repo, verwijder deze dan:

git remote remove origin

Vervang dan, in plaats van github.com toe te voegen als de remote, deze door de naam van de Host in de SSH-configuratiebestand. Git zal dit herkennen en deze SSH-host gebruiken om verbinding te maken. Je kunt aparte hosts per repository instellen.

git remote add origin git@personal:username/repository.git

Handmatig overschrijven

Als je niet wilt knoeien met de SSH-configuratie, of het gewoon tijdelijk wilt overschrijven, biedt Git ook de GIT_SSH_COMMAND-omgevingsvariabele. U kunt

GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Alle Git-commando's die u daarna uitvoert in dezelfde shell-sessie zullen die SSH gebruiken opdracht in plaats van de standaardopdracht. Je kunt ook een heel ander SSH-binair bestand instellen met GIT_SSH.