Hur man använder en annan privat SSH -nyckel för Git Shell -kommandon

0
193

Att använda SSH -nycklar är säkrare än lösenord, och det gäller Git som väl. Till skillnad från ett lösenord är det dock svårare att ändra din SSH -nyckel eller hantera flera nycklar. Genom att redigera din SSH-konfiguration kan du dock ansluta till flera Git-arkiv med olika nycklar.

Hur fungerar SSH med Git?

Git använder inte bara din privata nyckel för att autentisera när du använder SSH istället för HTTPS, det upprättar faktiskt en riktig SSH -anslutning till fjärrservern. Det gör detta tyst, så du kanske inte är medveten om kommandon det kör, men det använder ssh under huven.

Eftersom det använder ditt standard ssh -kommando kommer det att fungera som om du bara körde det själv och använda din standardnyckel i ~/.ssh/id_rsa. Det här är förmodligen inte vad du vill om du läser det här, så för att ändra det behöver du redigera SSH: s konfiguration, inte Gits. < /p>

Skapa en ny SSH-nyckel

Du behöver en för att göra det här i första hand, och det är ganska enkelt. Kör bara ssh -keygen och ange ett nytt nyckelnamn med -f -flaggan. Detta skapar en privat nyckel och en offentlig nyckel med filtillägget .pub.

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

Redigering ~/.ssh/config

SSH: s konfigurationsfil tillåter inställning av “ Hosts ” som matchar baserat på vad du ansluter till och tillåter ändring av filen som ssh använder.

Värd github Värdnamn github.com IdentityFile ~/.ssh/id_rsa.github Identiteter Endast ja Annonsering

Detta låter dig använda en annan SSH -nyckel än din primära för alla förfrågningar som går till github.com, men vad händer om du vill använda två olika nycklar för separata Git -arkiv? Till exempel en för ditt arbetskonto och en för ditt personliga konto.

Tja, du måste definiera två konfigurationer med olika namn med samma värd:

Host personal Värdnamn github.com IdentityFile ~/.ssh/githubpersonliga identiteter Endast ja Värdarbete Värdnamn github.com IdentityFile ~/.ssh/githubwork Identities Endast ja

Vanligtvis skulle detta resultera i en konfliktkonfiguration, men Git ger en väg runt detta. Om du har ett fjärrförråd som Github kopplat till din lokala repo, ta bort det:

git remote remove origin

Sedan, istället för att lägga till github.com som fjärrkontrollen, ersätt det med namnet på värden i SSH -konfigurationsfil. Git kommer att känna igen detta och använda denna SSH -värd för att ansluta. Du kan ställa in separata värdar per förvar.

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

Manuellt åsidosättande

Om du inte vill röra med SSH -konfiguration, eller bara vill åsidosätta det tillfälligt, tillhandahåller Git också miljövariabeln GIT_SSH_COMMAND. Du kan

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

Alla Git -kommandon som du kör i samma skal -session använder den SSH kommandot istället för standard. Du kan också ställa in en helt annan SSH -binär med GIT_SSH.