
Tengo varias claves ssh y también tengo una cuenta en bitbucket y github. ¿Cómo cada vez que uso pull me da un error?
:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly
o si hago ssh en el sitio web de Bitbucket, aparece un error de clave pública denegada.
:~$ ssh [email protected]
Permission denied (publickey).
¿Cómo puedo resolver esto y usar diferentes claves con diferentes cuentas?
Respuesta1
Todo esto se obtuvo del sitio web y de stackoverflow. Espero que esto ayude a quienes son nuevos en ssh.
para que puedas tener muchas claves ssh
~/.ssh$ ls
yyy_id_rsa yyy_id_rsa.pub id_rsa id_rsa.pub known_hosts
Nota: debemos agregarlo al agente ssh, probablemente se agregará id_rsa, por lo que debemos agregar la otra clave privada.
~/.ssh$ ssh-add yyy_id_rsa
ahora hemos agregado ambas claves ssh a ssh-agent
tenemos uno para bitbucket y otro para github
entonces creamos un archivo de configuración 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: estoy usando 2 claves diferentes para 2 cuentas diferentes en bitbucket y una para github.
Ahora necesitamos decirle al repositorio de git qué host usar para obtener esa clave ssh específica para esa cuenta específica.
cambiar [email protected]/yyyproject.git
agit@bit-yyyuser:yyyuser/yyyproject.git
entonces en la carpeta del proyecto y agregue la URL remota
/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git
en otro proyecto
/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git
ahora puedes usar empujar y tirar fácilmente
:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
* branch master -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$
y otro proyecto
/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$
Ahora no tengo el proyecto github en la máquina local, por lo que necesitamos clonar el proyecto, pero debemos hacer un pequeño cambio en la URL para clonar.
nuestra URL es así
[email protected]:xxxuser/python.git
como tenemos que clonarlo con claves específicas, solo necesitamos cambiar el nombre del host con el host que hemos definido
git@git-xxxuser:xxxuser/python.git
como se define en el archivo de configuración
y ahora 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$
Hemos identificado diferentes claves ssh para diferentes hosts, una para git y otra para bitbucket, ahora el sistema sabe qué claves ssh usar con cada host.
Ahora podemos tirar y empujar fácilmente.
Respuesta2
Lo configuro ~/.ssh/config
así:
Host gitlab-as-thuc
HostName git.thuc.com
User git
IdentityFile ~/.ssh/id_rsa.thuc
IdentitiesOnly yes
luego use un nombre de host personalizado en lugar del dominio real en la URL de git:
git remote add thuc git@gitlab-as-thuc:your-repo.git
Para obtener más detalles, lea aquí:http://itblog.study.land/how-to-specify- Different-ssh-keys-for-git-push-for-a-given-domain/