Come utilizzare più chiavi SSH con account e host diversi


21

ho più chiavi ssh e ho anche un account su bitbucket e github. come mai uso pull mi dà errore

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

o se ssh il sito web bitbucket dà errori negare la chiave pubblica

:~$ ssh git@bitbucket.org
Permission denied (publickey).

come posso risolvere questo problema e utilizzare chiavi diverse con account diversi.


Risposte:


21

Tutto questo è raccolto dal sito Web e dallo stackoverflow, spero che questo aiuti chi è nuovo a ssh

così puoi avere molti tasti ssh

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

Nota: dobbiamo aggiungere quindi all'agente ssh, probabilmente verrà aggiunto id_rsa quindi dobbiamo aggiungere l'altra chiave privata

~/.ssh$ ssh-add yyy_id_rsa

ora abbiamo aggiunto entrambe le chiavi ssh a ssh-agent

ne abbiamo uno per bitbucket e uno per github

quindi creiamo un file di configurazione come questo

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

Nota: sto usando 2 chiavi diverse per 2 account diversi su bitbucket e una per github.

Ora dobbiamo dire al repository git quale host utilizzare in modo da ottenere quella chiave ssh specifica per quell'account specifico

cambia git@bitbucket.orgyyyuser/yyyproject.gitingit@bit-yyyuser:yyyuser/yyyproject.git

quindi nella cartella del progetto e aggiungi l'URL remoto

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

in altri progetti

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

ora puoi usare push and pull facilmente

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

e un altro progetto

/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

ora non ho il progetto github sulla macchina locale, quindi dobbiamo clonare il progetto ma dobbiamo fare un piccolo cambiamento all'URL per clonare

il nostro url è così

git@github.com:xxxuser/python.git

poiché dobbiamo clonarlo con chiavi specifiche, dobbiamo solo cambiare il nome host con l'host che abbiamo definito

git@git-xxxuser:xxxuser/python.git

come definito nel file di configurazione

e ora possiamo clonare

:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

abbiamo identificato chiavi ssh diverse per host diversi, una per git e una per bitbucket ora il sistema sa quali chiavi ssh usare con quale host.

Ora possiamo facilmente tirare, spingere.


Cosa succede se il mio URL git utilizza https? In ogni caso per lavorarci su?
Gelin Luo,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.