2012-01-19 13 views
31

Usuarios de GitHub,Cómo trabajar con múltiples claves ssh

Soy un novato en github y tengo algún problema con la configuración de git. tengo 2 cuenta con diferentes usuarios en GitHub y tengo git configuración en mi sistema 2 veces

Primera carpeta /.ssh (como es habitual) (id_rsa contener el cual copiado en primera cuenta)
Segunda /.ssh/new carpeta (la que contiene id_rsa copiado en segunda cuenta)

ahora en el momento de empuje ¿Cómo puedo cambiar entre la clave ssh?

Porque si quisiera presionar para la segunda cuenta usará la tecla .ssh en lugar de .ssh/new y me dará un error.

Por favor, hágame la corrección si me han entendido algo mal aquí.

Gracias.

+1

me pregunto ¿por qué quiere colocar llaves "segundo" en '~ /. subcarpeta ssh'? ¿Por qué no ceñirse a la convención de tener una clave con sufijo por números, como: 'id_rsa',' id_rsa.1', 'id_rsa.2', etc ... –

+0

@JuicyScripter Solo quiero hacer una separación, también tienes razón, sin embargo, yo ¿Necesito decirle a Git qué tecla necesita usar y cómo? –

Respuesta

43

(he votado para cerrar esto como un posible duplicado, pero que también podría añadir una respuesta similar de todos modos.)

Cuando se utiliza el transporte SSH, GitHub le identifica como usuario en base a la clave SSH que utilizas para autenticarte Por lo tanto, debe asegurarse de que git esté utilizando una clave SSH para un repositorio y otra para el otro.

voy a asumir que:

  1. tiene una cuenta de GitHub llama user1, y que ha añadido a la cuenta de la clave pública correspondiente a la clave privada local /home/whoever/.ssh/id_rsa. Digamos que el repositorio que le interesa accediendo como user1 es user1/whatever en GitHub.
  2. Tiene una segunda cuenta de GitHub llamada user2 y ha agregado a esa cuenta la clave pública correspondiente a su clave privada local /home/whoever/.ssh/new/id_rsa. Digamos que el repositorio que le interesa accediendo como user2 es user2/whatever en GitHub.

La forma más sencilla de hacer frente a esta es la creación de un nuevo "a distancia" (es decir, un apodo para un repositorio remoto) para cada repositorio, donde el nombre de host se encuentra en la dirección URL de cada control remoto es realmente un alias que usted' se configuró en ~/.ssh/config. (Si no existe ese archivo de configuración, tendrá que crearlo.)

Por ejemplo, una entrada en el archivo ~/.ssh/config podría ser:

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

continuación, puede agregar un control remoto llamado gh-user1, por ejemplo, con:

git remote add gh-user1 [email protected]:user1/whatever.git 

...y luego, si usted quiere empujar su sucursal master al repositorio user1/whatever en GitHub con la tecla de ~/.ssh/id_rsa, sólo puede hacer:

git push gh-user1 master 

Con el fin de empujar como el otro usuario (user2) al segundo repositorio, necesita agregar un segundo alias ~/.ssh/config archivo. Por ejemplo:

Host gh-as-user2 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/new/id_rsa 

A continuación, para empujar a ese segundo repositorio como los diferentes usuarios, sólo se puede hacer:

git push gh-user2 master 
+2

¿Entonces git no funcionará sin .ssh/config? ¿Por qué no puede tomar un parámetro como ssh estándar? -i .ssh/my_github_key –

+1

Agregaría que esto se puede probar a través de 'ssh -T git @ gh-as-user1' y' ssh -T git @ gh-as-user1'. Si no funciona, intente ejecutar 'ssh-add ~/.ssh/new/id_rsa' o' ssh-add ~/.ssh/id_rsa' –

+3

Si las claves que está utilizando existen fuera del ~ /. ssh, no funcionarán a menos que lo haga: 'ssh-add/path/to/key' –

Cuestiones relacionadas