Tudo isso é coletado no site e no 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 adicionar então ao ssh-agent, provavelmente id_rsa será adicionado, portanto, precisamos adicionar a outra chave privada
~/.ssh$ ssh-add yyy_id_rsa
agora adicionamos as duas chaves ssh ao ssh-agent
temos um para o bitbucket e outro para o 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 duas chaves diferentes para duas contas diferentes no bitbucket e uma no github.
Agora precisamos dizer ao repositório git qual host usar, para que eu obtenha a chave ssh específica para essa conta específica
mude git@bitbucket.orgyyyuser/yyyproject.git
paragit@bit-yyyuser:yyyuser/yyyproject.git
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, por isso precisamos clonar o projeto, mas precisamos fazer uma pequena alteração no URL para clonar
nosso URL é assim
git@github.com:xxxuser/python.git
como precisamos cloná-lo com chaves específicas, basta 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 chaves ssh diferentes para host diferente, uma para git e outra para bitbucket agora o sistema sabe quais chaves ssh devem ser usadas com qual host.
Agora podemos facilmente puxar, empurrar.