Empuje a GitHub sin una contraseña usando ssh-key


215

Generé un par de claves SSH sin contraseña y agregué la clave pública a GitHub.

Conexión con

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

tuvo éxito y cuando cambio el nombre de la clave, falla.

Pero cuando quiero impulsar mis cambios, todavía me pide mi combinación de nombre de usuario y contraseña.

¿Hay alguna forma de empujar sin contraseña?


99
Asegúrese de no estar usando https://github...sus controles remotos. También deben seguir el git@github...formato.
cjc343

Respuestas:


419

Si le solicita un nombre de usuario y una contraseña, su control remoto de origen apunta a la URL HTTPS en lugar de a la URL SSH.

Cámbielo a ssh.

Por ejemplo, un proyecto de GitHub como Git tendrá una URL HTTPS:

https://github.com/<Username>/<Project>.git

Y el SSH:

git@github.com:<Username>/<Project>.git

Tu puedes hacer:

git remote set-url origin git@github.com:<Username>/<Project>.git

para cambiar la URL.


44
Esto lo resolvió, pero sigo preguntándome por qué Github le recomendaría que apunte el extremo remoto de un nuevo repositorio a una URL http de forma predeterminada. Acabo de crear un repositorio desde cero y se me presentó una opción para configurar una URL remota https, no una git.
Preslav Rachev

2
Aquí hay un comando rápido de shell de una línea que cambiará automáticamente su url https a la git apropiada (¡solo funciona para url github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba

11

Además, para lo esencial, parece que debe omitir el nombre de usuario

git remote set-url origin git@gist.github.com:<Project code>

10

En caso de que esté utilizando la URL SSH, pero aún así se le pide nombre de usuario y contraseña cuando git push:

git remote set-url origin git@github.com:<Username>/<Project>.git

Debe intentar solucionar problemas con:

ssh -vT git@github.com

A continuación se muestra una muestra de salida:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

De hecho, ya he agregado la clave pública a GitHub antes, y también tengo la clave privada localmente. Sin embargo, mi clave privada es de un nombre diferente llamado /c/Users/Yuci/.ssh/github_rsa.

Según el resultado de la muestra, Git lo está intentando /c/Users/Yuci/.ssh/id_rsa, lo cual no tengo. Por lo tanto, podría simplemente copiar github_rsaa id_rsaen el mismo directorio.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Ahora, cuando corro de ssh -vT git@github.comnuevo, tengo:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

Y ahora puedo empujar a GitHub sin que me pidan nombre de usuario y contraseña :-)


5

Debe usar la versión SSH , no HTTPS . Cuando clones desde un repositorio, copia el enlace con el SSH versión , porque SSH es fácil de usar y resuelve todos los problemas de acceso. Puede configurar el acceso para cada SSH que ingrese en su cuenta (como push, pull, clone, etc.)

Aquí hay un enlace que dice por qué necesitamos SSH y cómo usarlo: paso a paso

Git Generar claves SSH


0

Como de costumbre, cree una clave SSH y pegue la clave pública en GitHub. Agregue la clave privada a ssh-agent. (Asumo que esto es lo que has hecho).

Para verificar que todo esté correcto, use ssh -T git@github.com

A continuación, no olvide modificar el punto remoto de la siguiente manera:

git remote set-url origin git@github.com:username/your-repository.git

-4

Usando la línea de comando:

Ingrese ls -al ~/.sshpara ver si las claves SSH existentes están presentes.

En el terminal se muestra: no existe ningún directorio

Luego genere una nueva clave SSH

Paso 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

paso 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

paso 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

Lo sentimos, esta pregunta no se trata de cómo crear las claves, sino de configurar git para usar la clave en lugar de la autenticación
Sebus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.