Configuré git con éxito y empujé mi proyecto al repository remoto.
Ya había configurado mi user.name
global y user.email
ejecutando lo siguiente:
git config --global user.name 'user1' git config --global user.email 'user1@example.com'
Ahora tengo otro repository para el que necesitaba un usuario diferente, así que creé otro user
específico para ese repo
ejecutando:
git config user.name 'user2' git config user.email 'user2@example.com'
Y cuando intenta ejecutar git push
, no me deja presionar mi código y dice
Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Me estaba permitiendo impulsar mis cambios con el usuario global, ¿qué es diferente ahora? Soy nuevo en git y es difícil para mí llevarme bien.
Editar: Tengo ssh keys
separadas para mi github account
y mi bitbucket account
. Es decir, quiero github
ssh
a mi repo
github
utilizando la configuration global y a mi repo
bit bucket
utilizando configuraciones específicas de repo
.
Cambiar el nombre de usuario y el correo electrónico del usuario para un repository git no tiene nada que ver con la key ssh que se utilizará para impulsar el repository de subida.
Esa key ssh es por defecto ~/.ssh/id_rsa.pub
.
Esa key pública ( publicada en la página de count de usuario de BitBucket ssh ) es la que determina quién es el usuario cuando empuja a BitBucket.
La configuration user.name
/ user.email
solo se usa para mostrar la identidad correcta para los commits enviados al repository BitBucket. No tiene que reflejar el propietario real de dicho repository de BitBucket (que está determinado por la key pública ssh, o para el protocolo https, por la count de usuario de nombre de usuario / contraseña de BitBucket).
Si desea utilizar una key pública ssh diferente (registrada en un uso de BitBucket diferente), entonces, como mencioné en " ¿Cómo cambiar el usuario de git ssh para un ~/.ssh/config
remoto temporalmente? ", Necesitaría un ~/.ssh/config
file
git remote set-url origin anotheruser:reponame
Con anotheruser
siendo una input en el file ~/.ssh/config
, haciendo reference a otra key ssh privada de otro usuario:
Host anotheruser HostName bitbucket.org User git IdentityFile ~/.ssh/anotheruser
Tenga en count que siempre está usando ' git
' como el usuario para la session ssh con la que está presionando BitBucket.
Pero dado que está haciendo reference a la key ssh privada (y pública) adecuada, BitBucket sabrá quién es usted y, más importante aún, si tiene derecho a presionar a ese repository.
Suponiendo que ya tiene keys ssh separadas para ambas counts y vinculado a las respectivas counts, Siguiendo resolvió mi problema:
Host github.com HostName github.com PrefernetworkingAuthentications publickey IdentityFile ~/.ssh/personalid Host bitbucket.org HostName bitbucket.org PrefernetworkingAuthentications publickey IdentityFile ~/.ssh/personalid
Cargar keys ssh
Ejecute ssh-agent
si aún no está ejecutándose
eval ssh-agent $ SHELL
$ SHELL es la variable de entorno para su shell de inicio de session.
ssh-add -l
ssh-add /path/to/yourKey
¡Hecho!
Fuente: Aquí