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 [email protected]
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?

Sebus
fuente
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:

[email protected]:<Username>/<Project>.git

Tu puedes hacer:

git remote set-url origin [email protected]:<Username>/<Project>.git

para cambiar la URL.

manojlds
fuente
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\//[email protected]:/')
Christopher Shroba
11

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

git remote set-url origin [email protected]:<Project code>
Gordon Wells
fuente
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 [email protected]:<Username>/<Project>.git

Debe intentar solucionar problemas con:

ssh -vT [email protected]

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 [email protected]nuevo, 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 :-)

Yuci
fuente
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

Hazarapet Tunanyan
fuente
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 [email protected]

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

git remote set-url origin [email protected]:username/your-repository.git
Seenivasan
fuente
-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 "[email protected]"

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]
Jitendra
fuente
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