2011-10-28 14 views
7

Esto probablemente no es un duplicado; He leído muchos problemas similares en StackOverflow pero no este problema.Cuentas múltiples Github una computadora siempre ve una cuenta

Estoy tratando de usar múltiples cuentas de git en Ubuntu Linux y cada vez que intento presionar desde la segunda cuenta creo que todavía estoy usando el nombre de usuario de la primera cuenta.

$ git push -u origin master 
ERROR: Permission to <act2>/<repo>.git denied to <act1>. 

Primero probé el método de la clave SSH múltiple. Cuando obtuve el error anterior, creé un usuario completamente nuevo en mi máquina local, inicié sesión como ese usuario, recreé el repositorio local (es el primer impulso) y lo volví a intentar. Mismo error. Mi .config local muestra al usuario como lo hace mi ~/.gitconfig.

¿Alguna idea?

yo: ssh @localhost entonces ssh -vvv -T [email protected]

puedo obtener este resultado interesante. Parece que se apaga y encuentra una clave en mi cuenta. Pero de alguna manera usa una clave en mi cuenta, que en realidad no debería tener acceso.


debug1: Host 'github.com' is known and matches the RSA host key. 
debug1: Found key in /home//.ssh/known_hosts:1 
debug2: bits set: 513/1024 
debug1: ssh_rsa_verify: signature correct 
debug2: kex_derive_keys 
debug2: set_newkeys: mode 1 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug3: Wrote 16 bytes for a total of 1015 
debug2: set_newkeys: mode 0 
debug1: SSH2_MSG_NEWKEYS received 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug3: Wrote 48 bytes for a total of 1063 
debug2: service_accept: ssh-userauth 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug2: key: 
debug2: key: 
debug2: key: /home//.ssh/identity ((nil)) 
debug2: key: /home//.ssh/id_rsa() 
debug2: key: /home//.ssh/id_dsa ((nil)) 
debug3: Wrote 64 bytes for a total of 1127 
debug1: Authentications that can continue: publickey 
debug3: start over, passed a different list publickey 
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password 
debug3: authmethod_lookup publickey 
debug3: remaining preferred: keyboard-interactive,password 
debug3: authmethod_is_enabled publickey 
debug1: Next authentication method: publickey 
debug1: Offering public key: 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug3: Wrote 368 bytes for a total of 1495 
debug1: Authentications that can continue: publickey 
debug1: Offering public key: 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug3: Wrote 368 bytes for a total of 1863 
debug1: Remote: Forced command: gerve 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Server accepts key: pkalg ssh-rsa blen 277 
debug2: input_userauth_pk_ok: fp 
debug3: sign_and_send_pubkey 
debug3: Wrote 640 bytes for a total of 2503 
debug1: Remote: Forced command: gerve 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Authentication succeeded (publickey). 
debug1: channel 0: new [client-session] 
debug3: ssh_session2_open: channel_new: 0 
debug2: channel 0: send open 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 
debug3: Wrote 128 bytes for a total of 2631 
debug2: callback start 
... 
+0

hizo todo de nuevo en una VM (donde act1 no existe) y funcionó ... pero eso definitivamente no es ideal :-( – AndrewStone

Respuesta

9

Esto sucede porque ssh-agente almacena la clave ssh (incluso se puede eliminar el archivo y de él todavía permitir SSH para conectarse con éxito hasta que se borre la memoria caché) y dará prioridad a las claves almacenadas en caché incluso por encima de los especificados a través de IdentityFile.Se puede ver qué archivos se almacenan en caché ejecutando:

ssh-add -l 

puede obligar a ssh-agente de ignorar la caché mediante la inclusión de IdentitiesOnly "sí" en el .ssh/config para cada conexión:

Host github 
    HostName github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa 
    IdentitiesOnly yes 

Host github-work 
    HostName github.com 
    User git 
    IdentityFile ~/.ssh/id_dsa_work 
    IdentitiesOnly yes 

Más información aquí: http://sealedabstract.com/code/github-ssh-with-multiple-identities-the-slightly-more-definitive-guide/

Tardé bastante en descubrir esto también, espero que ayude a alguien.

+0

Esta es una enorme, gran ayuda Phil. Esto resolvió mi problema de inmediato. – AKWF

0

Eche un vistazo a los permisos de la carpeta .git y su contenido. Confirme qué clave SSH se está transfiriendo a github con ssh github.com -vvvv.

+0

ssh [email protected] -vvvv dice "Hola " (el error cuenta) Excavando a través de todos los resultados para ver por qué – AndrewStone

+0

por alguna razón el ssh está llegando a mi otra acto de usuario y mirándolo. Emite: debug2: key:/home/ /.ssh/id_rsa y " remoto: comando forzado: gerve " – AndrewStone

+0

Puede tener el directorio de inicio incorrecto. ¿Qué dice' pwd ~ '? –

3

Para expresar mis suposiciones para esta respuesta, suena desde el título de la pregunta como si lo que realmente desea hacer es poder presionar para que GitHub se identifique como usuarios diferentes de GitHub.

Si ese es el caso, no debe crear múltiples usuarios en su sistema solo para presionar como diferentes usuarios de GitHub a través de SSH. La forma correcta de hacerlo es configurar dos alias para github.com en ~/.ssh/config que especifiquen diferentes archivos de identidad, as described here. Por ejemplo, es posible que tenga en su ~/.ssh/config lo siguiente:

Host github-act1 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/id_rsa.act1 

Host github-act2 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/id_dsa.act2 

continuación, puede añadir dos mandos a distancia para su repositorio:

git add remote act1 [email protected]:whoever/whatever.git 
git add remote act2 [email protected]:whoever/whatever.git 

Entonces, si usted quiere empujar como un usuario que puede hacer:

git push act1 master 

... o como la segunda cuenta:

git push act2 master 
+0

sí, probé ese método primero. Mismo error. Entonces, fui al método de cuentas múltiples de Unix, pensando que tenía algún problema de configuración de ssh ... – AndrewStone

+0

@AndrewStone: ¿cómo estás iniciando sesión como el segundo usuario? ¿Qué te muestra 'echo $ HOME' una vez y ¿Has iniciado sesión como el segundo usuario? –

+0

ssh @localhost. Muestra/home/. Perdón por la demora en responder el corte de energía de 4 días. – AndrewStone

0
debug2: key: 
debug2: key: 
debug2: key: /home//.ssh/identity ((nil)) 
debug2: key: /home//.ssh/id_rsa() 
debug2: key: /home//.ssh/id_dsa ((nil)) 

Eso se ve terriblemente sospechoso. ¿Por qué su directorio personal es /home/? Si más de un usuario tiene el mismo directorio de inicio, no me sorprende que ssh encuentre la misma clave para ambos usuarios. Comprobar los resultados de

echo $HOME 

mientras se está como cada usuario. Deben señalar a diferentes directorios.

Cuestiones relacionadas