Digamos que su .ssh
directorio contiene 30 claves (15 privadas y 15 públicas).
¿Dónde en Git se puede comprobar cuál se utiliza para conectarse a un repositorio remoto determinado?
Digamos que su .ssh
directorio contiene 30 claves (15 privadas y 15 públicas).
¿Dónde en Git se puede comprobar cuál se utiliza para conectarse a un repositorio remoto determinado?
Respuestas:
La siguiente entrada en el .ssh/config
archivo resuelve el problema
host git.assembla.com
user git
identityfile ~/.ssh/whatever
¿Dónde ~/.ssh/whatever
hay un camino a su clave privada?
Además, el usuario y el host se pueden recoger de
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
La ejecución de ssh en modo detallado, también conocido como ssh -v user@host
, imprimirá una gran cantidad 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, si combina esto, con el Paso 4 en la propia página de ayuda SSH de Git , ssh -vT git@github.com
puede darle la respuesta.
Nota: También puede usar el -i
conmutador para decirle a ssh durante la ejecución del comando, qué archivo de claves usar.
ssh -vv user@host 2> >(grep Offering)
- esto facilitará las cosas. El último archivo debe ser la clave pública. Por ejemplo:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
no es lo mismo que git
.
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.
Diría que lo más práctico para mi gusto sería:
GIT_SSH_COMMAND='ssh -v' git …
por supuesto, dependiendo de las circunstancias, podría ser beneficioso exportarlo al entorno actual de SHELL para que no tenga que anteponerlo manualmente cada vez. Entonces sería de esta manera:
export GIT_SSH_COMMAND='ssh -v'
git …
- Como man git
sugiere, hay algunas variables ambientales que afectarían las operaciones de Git con el uso de SSH. Según man ssh
puede obtener información de depuración al implementar la -v
opción (no solo, sino también, consulte el manual si tiene curiosidad por obtener más información).
que clave se usa?
En la salida, verías algo como ...
debug1: Offering public key: …
… Que es la respuesta a tu qn.
set GIT_SSH_COMMAND=ssh -v
. Esto me ayudó a descubrir que ssh-config Inlcude-Path debería ser algo como esto en Windows: Include /C/Users/YourUserName.ssh/config
para hacer que ssh y, por lo tanto, git use un archivo de configuración que luego usa, por ejemplo, una HOST *
entrada para especificar el archivo de identidad que usa git / ssh.
Dado que git
solo se usa ssh
para conectarse, usará la clave ssh
que usaría para conectarse al host remoto. Consulte el ~/.ssh/config
archivo para obtener más detalles; el host
bloque usa la IdentityFile
directiva para especificar la clave privada a usar. La página de ssh_config(5)
manual contiene todos los detalles.
/etc/ssh/ssh_config
/etc/ssh_config
que parece ser un archivo lleno de entradas comentadas
~/.ssh/config
tú mismo.
Esto podría ser una gran ventaja, pero después de ejecutarlo ssh -vT git@github.com
me mostró que estaba /root/.ssh
buscando las claves, esperaba que verificara mi directorio de inicio y luego me di cuenta de que había iniciado sesión como root.
ssh
forma de interrogatorio son las soluciones correctas. Gracias.
En el servidor remoto, edite el archivo sshd_config y cambie LogLevel de INFO a VERBOSE y reinicie ssh.
Ahora su archivo de registro contendrá 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. Solo busque en Google su ubicación (algunos usan / var / log / secure, por ejemplo).