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 configurar “Hosts” que 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
.
Articoli correlati
- Come scaricare e installare Steam su Linux
- Come usare “se comprendi i rischi e i vantaggi dell'utilizzo di una distribuzione basata su Arch” se comprendi i rischi e i vantaggi dell'utilizzo di una distribuzione basata su Arch
- Come trovare e rimuovere collegamenti simbolici interrotti in Linux
- Come usare Flameshot, uno strumento di screenshot per Linux