2012-06-19 13 views
42

Digamos que su directorio .ssh contiene 30 teclas (15 privados y 15 públicos)GIT y SSH, ¿qué tecla se usa?

Donde en GIT, puede uno de comprobación que uno se utiliza para conectarse a un acuerdo de recompra remoto determinado?

+4

Quien votó por "cerrar", esta pregunta - está directamente relacionada con la programación por la misma razón, las preguntas sobre GIT están permitidas aquí – JAM

+1

Podría decirse ... Esto realmente es una pregunta de superusuario, el problema aquí no es git, pero la plataforma en la que se está ejecutando. No puede verificar el problema con "in git", porque a git no le importa, se relaciona solo con la forma en que usa ssh y cómo está configurado. ¿Utiliza ssh-agent, cualquier tipo de sistema de administración de claves, qué sistema operativo usa, qué versión, etcétera? – Arafangion

Respuesta

41

La siguiente entrada en .ssh/config archivo resuelve el problema

host git.assembla.com 
    user git 
    identityfile ~/.ssh/whatever 

Dónde ~/.ssh/whatever es un camino a su clave privada

Además, el usuario y el host pueden ser recogidos de

git push [email protected]:repo_name.git 
     ^__ ^_______________ 
     user host 
+0

así que si quisiera utilizar otra clave ssh para un host diferente, ¿repetiría lo mismo después del primero? ¿El archivo de identidad pertenece al primer host anterior? – MikeSchem

+0

bien, sí, parece que ese es el caso https://www.cyberciti.biz/faq/force-ssh-client-to-use-given-private-key-identity-file/ – MikeSchem

5

Dado que git solo usa ssh para conectarse, usará la clave ssh que usaría para conectarse al host remoto. Vea el archivo ~/.ssh/config para más detalles; El bloque host usa la directiva IdentityFile para especificar la clave privada que se usará. La página del manual ssh_config(5) contiene todos los detalles.

+0

Hmm .. el archivo no existe en mi sistema. ¿Deberia? – JAM

+1

@JAM ¿Qué sistema operativo está usando? Además, a veces el archivo de configuración está en '/ etc/ssh/ssh_config' –

+0

Estoy en MACOS.Encontrado '/ etc/ssh_config' que parece ser un archivo lleno de entradas comentadas – JAM

6

A menos que se especifique en el .ssh/config, utilizará el archivo de clave privada predeterminado. El archivo predeterminado es ~/.ssh/id_rsa o ~/.ssh/id_dsa o ~/.ssh/identity según la versión del protocolo.

1

En el servidor remoto, edite el archivo sshd_config y cambie LogLevel de INFO a VERBOSE y reinicie ssh.

Ahora su archivo de registro tendrá la huella digital de la clave que se utilizó para autenticar a cada usuario.

En Ubuntu, estos archivos son:

/etc/ssh/sshd_config 
/var/log/auth.log 

pero pueden ser diferentes en otra distribución. Simplemente busque su ubicación en google (algunos usan/var/log/secure por ejemplo).

31

Al ejecutar ssh en modo detallado, también conocido como ssh -v [email protected], se imprimirá una gran carga de información de depuración, que también contiene detalles sobre qué archivos de claves está intentando iniciar sesión.

debug1: Authentications that can continue: publickey 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /home/user/.ssh/id_rsa 
debug1: Server accepts key: pkalg ssh-rsa blen 332 
debug1: read PEM private key done: type RSA 
debug1: Authentication succeeded (publickey). 

Ahora bien, si se combina esto con el Paso 4 en la propia Git SSH help page, ssh -vT [email protected] le puede dar la respuesta.

Nota: También puede usar el interruptor -i para indicar a ssh durante la ejecución del comando, qué archivo de clave debe usar.

+0

Vea también: http://stackoverflow.com/questions/18845799/show-ssh-key-file-in-git-bash – Sharadh

+0

También puede grep la salida de error estándar del comando ssh para encontrar el archivo clave de esta manera: 'ssh -vv user @ host 2>> (oferta grep) '- esto facilitará las cosas. El último archivo debe ser la clave pública. Por ejemplo: 'debug1: ofreciendo la clave pública de RSA:/Users/macbookpro/.ssh/id_rsa' –