Digamos que su .sshdirectorio 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 .sshdirectorio 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/configarchivo resuelve el problema
host git.assembla.com
user git
identityfile ~/.ssh/whatever
¿Dónde ~/.ssh/whateverhay 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.compuede darle la respuesta.
Nota: También puede usar el -iconmutador 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
githubno 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_rsao ~/.ssh/id_dsao ~/.ssh/identitysegú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 gitsugiere, hay algunas variables ambientales que afectarían las operaciones de Git con el uso de SSH. Según man sshpuede obtener información de depuración al implementar la -vopció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/configpara 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 gitsolo se usa sshpara conectarse, usará la clave sshque usaría para conectarse al host remoto. Consulte el ~/.ssh/configarchivo para obtener más detalles; el hostbloque usa la IdentityFiledirectiva 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_configque parece ser un archivo lleno de entradas comentadas
~/.ssh/configtú mismo.
Esto podría ser una gran ventaja, pero después de ejecutarlo ssh -vT git@github.comme mostró que estaba /root/.sshbuscando las claves, esperaba que verificara mi directorio de inicio y luego me di cuenta de que había iniciado sesión como root.
sshforma 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).