Quien haya votado a favor de "cerrar", esta pregunta, está directamente relacionada con la programación por la misma razón que aquí se permiten preguntas sobre GIT
James Raitsev
1
Podría decirse ... Esta es realmente una pregunta de superusuario, el problema aquí no es git, sino la plataforma en la que se ejecuta. No puede verificar "en git" el problema, porque a git no le importa, se relaciona solo con cómo usa ssh y cómo está configurado. ¿Utiliza ssh-agent, algún tipo de sistema de gestión de claves, qué sistema operativo utiliza, qué versión, etcétera?
Arafangion
Respuestas:
68
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 [email protected]:repo_name.git
^__ ^_______________
user host
entonces, si quisiera usar otra clave ssh para un host diferente, ¿repetiría lo mismo después de la primera? ¿El archivo de identidad pertenece al primer host anterior?
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).
También puede grep de la salida de error estándar del comando ssh para encontrar el archivo de clave de esta manera: 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
Gianfranco P.
3
githubno es lo mismo que git.
ForeverWintr
9
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.
¿Cuándo se agregan las claves a los hosts conocidos?
mountainLion
6
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).
SI. Esta debería ser la respuesta aceptada. Para hacer que funcione en las ventanas CMD (uf), utilice: 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.
icyerasor
5
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.
Hmm ... el archivo no existe en mi sistema. ¿Deberia?
James Raitsev
1
@JAM ¿Qué sistema operativo estás usando? Además, a veces el archivo de configuración está en/etc/ssh/ssh_config
Estoy en MACOS. Encontrado /etc/ssh_configque parece ser un archivo lleno de entradas comentadas
James Raitsev
@sarnold Podrías crear ~/.ssh/configtú mismo.
xdazz
4
Esto podría ser una gran ventaja, pero después de ejecutarlo ssh -vT [email protected]me 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.
Respuestas:
La siguiente entrada en el
.ssh/config
archivo resuelve el problema¿Dónde
~/.ssh/whatever
hay un camino a su clave privada?Además, el usuario y el host se pueden recoger de
fuente
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.Ahora, si combina esto, con el Paso 4 en la propia página de ayuda SSH de Git ,
ssh -vT [email protected]
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.fuente
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 quegit
.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.fuente
Diría que lo más práctico para mi gusto sería:
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:
- Como
man git
sugiere, hay algunas variables ambientales que afectarían las operaciones de Git con el uso de SSH. Segúnman 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).En la salida, verías algo como ...
… Que es la respuesta a tu qn.
fuente
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, unaHOST *
entrada para especificar el archivo de identidad que usa git / ssh.Dado que
git
solo se usassh
para conectarse, usará la clavessh
que usaría para conectarse al host remoto. Consulte el~/.ssh/config
archivo para obtener más detalles; elhost
bloque usa laIdentityFile
directiva para especificar la clave privada a usar. La página dessh_config(5)
manual contiene todos los detalles.fuente
/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 [email protected]
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.fuente
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:
pero pueden ser diferentes en otra distribución. Solo busque en Google su ubicación (algunos usan / var / log / secure, por ejemplo).
fuente