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

Contenuti

Logo Git

L'uso delle chiavi SSH è più sicuro delle password, e questo vale anche per Git. Nonostante questo, a differenza di una password, è più difficile cambiare la tua chiave SSH o gestire più chiavi. Nonostante questo, quando modifichi la tua configurazione SSH, può connettersi 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 stai eseguendo, ma usa ssh underhood.

Perché usa la tua impostazione predefinita ssh comando, ti comporterai come se l'avessi appena eseguito tu stesso, e utilizzerà la tua chiave predefinita in ~/.ssh/id_rsa. Questo probabilmente non è quello che vuoi se stai leggendo questo, quindi per cambiarlo, dovrai modificare la configurazione SSH, non quello di Git.

Crea una nuova chiave SSH

Avrai bisogno di uno per farlo in primo luogo, e farlo è abbastanza semplice. Corri ssh-keygen e specificare un nuovo nome di chiave con il -f bandiera. Questo creerà una chiave privata e una chiave pubblica con il .pub estensione.

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

Modifica ~ / .ssh / config

El archivo de configuración de SSH posibilita configurarHostsque coincidirán en función de lo que se está conectando y permitir la modificación del archivo que ssh usos.

Host github
  Hostname github.com
  IdentityFile ~/.ssh/id_rsa.github
  IdentitiesOnly yes

Esto le permitirá usar una clave SSH distinto a la principal para todas las solicitudes que vayan a github.com, pero ¿qué sucede si desea utilizar dos claves diferentes para repositorios de Git separados? Come esempio, uno para su cuenta de trabajo y otro para su cuenta personal.

Bene, necesitará establecer dos configuraciones con diferentes nombres, usando el mismo host:

Host personal
  Hostname github.com
  IdentityFile ~/.ssh/githubpersonal
  IdentitiesOnly yes

Host work
  Hostname github.com
  IdentityFile ~/.ssh/githubwork
  IdentitiesOnly yes

Generalmente, esto daría como consecuencia una configuración conflictiva, pero Git proporciona una forma de evitar esto. Si tiene un repositorio remoto como Github vinculado con su repositorio local, elimínelo:

git remote remove origin

Quindi, en lugar de agregar 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 configurare host separati da repository.

git remote aggiungi origine git@personal:nomeutente/repository.git

Azionamento manuale

Se non vuoi interferire con le impostazioni SSH, o vuoi semplicemente sovrascriverlo temporaneamente, Git fornisce anche il GIT_SSH_COMMAND Variabile ambientale. 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à quel comando SSH invece del comando predefinito. Puoi anche configurare un binario SSH completamente diverso con GIT_SSH.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.