Como usar múltiplas chaves SSH com diferentes contas e hosts

Como usar múltiplas chaves SSH com diferentes contas e hosts

eu tenho várias chaves ssh e também tenho uma conta no bitbucket e no github. como sempre que eu uso pull isso me dá erro

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

ou se eu ssh o site do bitbucket ele dá erros na chave pública negada

:~$ ssh [email protected]
Permission denied (publickey).

como posso resolver isso e usar chaves diferentes com contas diferentes.

Responder1

Tudo isso foi coletado do site e do stackoverflow, espero que ajude quem é novo no ssh

então você pode ter muitas chaves ssh

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

Nota: precisamos adicioná-lo ao agente ssh, provavelmente id_rsa será adicionado, então precisamos adicionar a outra chave privada

~/.ssh$ ssh-add yyy_id_rsa

agora adicionamos ambas as chaves ssh ao ssh-agent

temos um para bitbucket e outro para github

então criamos um arquivo de configuração como este

~/.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: estou usando 2 chaves diferentes para 2 contas diferentes no bitbucket e uma para o github.

Agora precisamos informar ao repositório git qual host usar para que eu obtenha aquela chave ssh específica para essa conta específica

mudar [email protected]/yyyproject.gitparagit@bit-yyyuser:yyyuser/yyyproject.git

então na pasta do projeto e adicione o URL remoto

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

em outro projeto

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

agora você pode usar empurrar e puxar 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 outro projeto

/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$ 

agora não tenho o projeto github na máquina local, então precisamos clonar o projeto, mas precisamos fazer uma pequena alteração no URL para clonar

nossa url é assim

[email protected]:xxxuser/python.git

como temos que cloná-lo com chaves específicas, só precisamos alterar o nome do host com o host que definimos

git@git-xxxuser:xxxuser/python.git

conforme definido no arquivo de configuração

e agora podemos clonar

:/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$ 

identificamos diferentes chaves ssh para diferentes hosts, uma para git e outra para bitbucket, agora o sistema sabe quais chaves ssh devem ser usadas com qual host.

Agora podemos facilmente puxar e empurrar.

Responder2

Eu configuro ~/.ssh/configassim:

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

então use o nome do host personalizado em vez do domínio real no URL do git:

git remote add thuc git@gitlab-as-thuc:your-repo.git  

Para mais detalhes, leia aqui:http://itblog.study.land/how-to-specify- Different-ssh-keys-for-git-push-for-a-given-domain/

informação relacionada