Come utilizzare una chiave SSH privata diversa per i comandi di Git Shell

0
159

L'uso delle chiavi SSH è più sicuro delle password e questo vale per Git come bene. A differenza di una password, tuttavia, è più difficile modificare la chiave SSH o gestire più chiavi. Modificando la configurazione di SSH, tuttavia, puoi connetterti a più repository Git con chiavi diverse.

Come funziona SSH con Git?

Git non usa solo la tua chiave privata per autenticarti quando usi SSH invece di HTTPS—in ​​realtà stabilisce una vera connessione SSH al server remoto. Lo fa in silenzio, quindi potresti non essere a conoscenza dei comandi che sta eseguendo, ma usa ssh sotto il cofano.

Poiché utilizza il comando ssh predefinito, si comporterà come se lo avessi eseguito tu stesso e utilizzerà la chiave predefinita in ~/.ssh/id_rsa. Questo probabilmente non è quello che vuoi se stai leggendo questo, quindi per cambiarlo, dovrai modificare la configurazione di SSH—non Git’s.< /p>

Creazione di una nuova chiave SSH

Avrai bisogno di uno per farlo in primo luogo, e farlo è abbastanza facile. Esegui semplicemente ssh-keygen e specifica un nuovo nome di chiave con il flag -f. Questo creerà una chiave privata e una chiave pubblica con l'estensione .pub.

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

Modifica ~/.ssh/config

Il file di configurazione SSH’consente di impostare “Host” che corrisponderà in base a ciò a cui ti stai connettendo e consentirà la modifica del file utilizzato da ssh.

Host github Nome host github.com IdentityFile ~/.ssh/id_rsa.github IdentitiesOnly yes Pubblicità

Ciò ti consentirà di utilizzare una chiave SSH diversa da quella principale per tutte le richieste inviate a github.com, ma cosa succede se desideri utilizzare due chiavi diverse per repository Git separati? Ad esempio, uno per il tuo account di lavoro e uno per il tuo account personale.

Beh, dovrai definire due configurazioni con nomi diversi, utilizzando lo stesso host:

Host personale Nome host github.com IdentityFile ~/.ssh/githubpersonal IdentitiesOnly yes Host work Nome host github.com IdentityFile ~/.ssh/githubwork IdentitiesOnly yes

Di solito ciò si tradurrebbe in una configurazione conflittuale, ma Git fornisce un modo per aggirare questo. Se hai un repository remoto come Github collegato al tuo repository locale, eliminalo:

git remote remove origin

Quindi, invece di aggiungere github.com come remoto, sostituiscilo con il nome dell'Host nel File di configurazione SSH. Git lo riconoscerà e utilizzerà questo host SSH per connettersi. Puoi impostare host separati per repository.

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

Sostituzione manuale

Se non vuoi interferire con la configurazione SSH o vuoi semplicemente sovrascriverla temporaneamente, Git fornisce anche la variabile di ambiente GIT_SSH_COMMAND. Puoi

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

Qualsiasi comando Git eseguito successivamente nella stessa sessione di shell utilizzerà quell'SSH comando invece di quello predefinito. Puoi anche impostare un binario SSH completamente diverso con GIT_SSH.