¿Por qué Github solicita nombre de usuario / contraseña cuando sigue las instrucciones en pantalla y empuja un nuevo repositorio?

298

Soy el propietario de una organización en github y acabo de crear un repositorio e intenté presionar, pero me encuentro con un problema en el que me está pidiendo mi nombre de usuario a pesar de que puedo SSH bien:

$ ssh -T [email protected]
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

¿Qué estoy haciendo mal? Esto nunca me había pasado antes, pero recientemente también actualicé a git 1.7.10.3.

Kit Sunde
fuente

Respuestas:

662

No use HTTP use SSH en su lugar

cambio

https://github.com/WEMP/project-slideshow.git 

a

[email protected]:WEMP/project-slideshow.git

puedes hacerlo en .git/configarchivo

Hugo
fuente
1
¡Gracias! Acabo de descubrir esto después de leer stackoverflow.com/a/10126412/29347 , no creo que github normalmente me dé un repositorio remoto como HTTPS, lo que causó cierta confusión.
Kit Sunde
2
Puede cambiar esta opción haciendo clic en el botón donde copia su URL de clonación.
Derek Adair
Para MacOS Emita cuando actualice a las últimas macos. stackoverflow.com/a/39616339/1445102
1Rhino
12
También puede hacerlo git remote set-url origin [email protected]:user/repo.git, como se detalla en stackoverflow.com/questions/10126381/…
Y finalmente el
54

Tuve este mismo problema y me pregunté por qué no sucedió con un repositorio de bitbucket que se clonó con https. Al examinarlo un poco, descubrí que la configuración para el repositorio de BB tenía una URL que incluía mi nombre de usuario. Así que edité manualmente la configuración para mi repositorio GH como tal y listo, no más avisos de nombre de usuario. Estoy en Windows

Editar your_repo_dir/.git/config(recuerde: la .gitcarpeta está oculta)

Cambio:

https://github.com/WEMP/project-slideshow.git

a:

https://*username*@github.com/WEMP/project-slideshow.git

Guarda el archivo. Haz una git pullpara probarlo.

Probablemente, la forma correcta de hacerlo es usar los comandos de git bash para editar la configuración, pero editar el archivo directamente no parece ser un problema.

Sean
fuente
Ese es un buen punto, si incluye el nombre de usuario, será manejado por el llavero del sistema operativo (al menos debería en OSX, y aparentemente también en Windows). No hay diferencia entre editar el archivo con el bloc de notas o con vim / emacs / nano / vi, no me preocuparía tanto por el esnobismo técnico, de todos modos es solo un archivo de texto sin formato.
Kit Sunde
20

Aquí hay una respuesta oficial a esto:

Si Git le solicita un nombre de usuario y una contraseña cada vez que intenta interactuar con GitHub, probablemente esté utilizando la URL de clonación HTTPS para su repositorio.

El uso de una URL remota HTTPS tiene algunas ventajas: es más fácil de configurar que SSH, y generalmente funciona a través de servidores de seguridad y servidores proxy estrictos. Sin embargo, también le solicita que ingrese sus credenciales de GitHub cada vez que extrae o empuja un repositorio.

Puede configurar Git para almacenar su contraseña por usted. Si desea configurar eso, lea todo sobre cómo configurar el almacenamiento en caché de contraseñas .

Catalin Hritcu
fuente
1
Gracias. Yo diría con Github que no es más fácil de configurar si terminas aquí (:
ecoologic
Esta es una respuesta a una pregunta porque la pregunta es, ¿POR QUÉ ?
eli
14

Mejorando la respuesta de @ Ianl ,

Parece que si la autenticación de 2 pasos está habilitada, debe usar token en lugar de contraseña. Podrías generar una ficha aquí .

Si desea deshabilitar las solicitudes tanto para el nombre de usuario como para la contraseña, puede configurar la URL de la siguiente manera:

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git

Tenga en cuenta que la URL tiene tanto el nombre de usuario como la contraseña. Además, el .git/configarchivo debe mostrar su configuración actual.


Actualización 20200128:

Si no desea almacenar la contraseña en el archivo de configuración, puede generar su token personal y reemplazar la contraseña con el token. Aquí hay algunos detalles .

Se vería así:

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git
kaushal
fuente
¿Es esto seguro? ¿Alguien puede acceder a esta información desde mi computadora?
Akaisteph7
Sí, pueden acceder desde su computadora ya que están almacenados en texto sin formato en el .git/configarchivo
kaushal
11

una nota adicional:

si ya ha agregado un control remoto ($ git remote add origin ...) y necesita cambiar ese control remoto en particular, primero realice una eliminación remota ($ git remote rm origin), antes de volver a agregar la URL de repositorio nueva y mejorada (donde "origen" era el nombre del repositorio remoto).

para usar el ejemplo original:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://[email protected]/WEMP/project-slideshow.git
IanI
fuente
44
No tiene que quitar el control remoto. Puede cambiar la URL:git remote set-url origin https://[email protected]/WEMP/project-slideshow.git
shovavnik
8

Si está utilizando HTTPS, asegúrese de que su URL sea correcta. Por ejemplo:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.
un nerd pagado
fuente
1
Ese es un gran punto! Si tiene un error tipográfico en la URL, se le solicitará el 'Nombre de usuario' en lugar de que se le indique que el repositorio no existe.
dmitrii
5

Acabo de recibir un correo electrónico de un administrador de github.com que dice lo siguiente: "Normalmente aconsejamos a las personas que usen la URL HTTPS a menos que tengan una razón específica para usar el protocolo SSH. HTTPS es seguro y más fácil de configurar, así que de manera predeterminada, se crea un nuevo repositorio ".

La solicitud de contraseña acepta los detalles de inicio de sesión normales de github.com. Puede encontrar un tutorial sobre cómo configurar el almacenamiento en caché de contraseñas en https://help.github.com/articles/set-up-git#password-caching . Seguí los pasos en el tutorial, y funcionó para mí.

jochen
fuente
4

Porque estás usando la forma HTTPS . HTTPS requiere que ingrese el acceso a su cuenta cada vez que intenta presionar o tirar , pero también hay una forma, llamada SSH , y le permite decirle a git, que le doy permiso con mi cuenta para esta PC, y nunca preguntar nuevamente sobre cualquier acceso de usuario . Para usarlo, debe generar la clave SSH y agregarla a su cuenta de Github solo una vez . Para ello, puede seguir estos pasos

Cómo generar la clave SSH para Github

Hazarapet Tunanyan
fuente