¿Cómo hacer git desde el repository público a través de ssh sin una key?

Tengo un repository público, https://github.com/rlpowell/config . Solía ​​poder ejecutar git pull sin ninguna key ssh (es decir, desde cron), y funciona bien, usando la URL git@github.com: rlpowell / config.git (es decir, la URL SSH). Esto ya no funciona, y no tengo idea de por qué, pero funciona para dos de mis amigos.

Me gustaría poder hacer un repository público sin una key ssh, o al less entender por qué no funciona para mí y para otras personas.

Aquí hay un amigo probando mi caso de testing:

$ git clone git@github.com:rlpowell/config.git ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull ) Cloning into 'config'... Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts. remote: Counting objects: 1061, done. remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061 Receiving objects: 100% (1061/1061), 544.42 KiB | 495.00 KiB/s, done. Resolving deltas: 100% (632/632), done. Checking connectivity... done. Could not open a connection to your authentication agent. Already up-to-date. 

Y aquí estoy yo haciendo exactamente lo mismo:

 $ git clone git@github.com:rlpowell/config.git ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull ) Cloning into 'config'... remote: Counting objects: 1061, done. remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061 Receiving objects: 100% (1061/1061), 544.42 KiB | 0 bytes/s, done. Resolving deltas: 100% (632/632), done. Checking connectivity... done. Could not open a connection to your authentication agent. Enter passphrase for key '/home/rlpowell/.ssh/id_rsa': Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

(Presioné Enter en el indicador de contraseña de la tecla ssh).

En el repository, el .git / config es:

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = git@github.com:rlpowell/config.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master 

Y git config -l es:

 $ git config -l user.email=rlpowell@digitalkingdom.org user.name=Robin Lee Powell push.default=matching core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true remote.origin.url=git@github.com:rlpowell/config.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master 

la versión de Git es 2.5.5

strace dice que lo que realmente ejecuta ssh es

 ssh git@github.com git-upload-pack 'rlpowell/config.git' 

intente ejecutar este command primero:

 ssh -o PrefernetworkingAuthentications=password -o PubkeyAuthentication=no github.com 

y luego git pull nuevamente.

Lo intenté sin key, y confirmo que no puede funcionar (sin la key SSH):

 $ git clone git@github.com:rlpowell/config.git Cloning into 'config'... Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

Esto se debe a que GitHub no autorizará el acceso anónimo a través de SSH (en lugar de https), como otros serveres de git repo decidieron hacer ( como Gogits o go-gitea )

GitHub menciona :

Las URL SSH brindan acceso a un repository Git a través de SSH, un protocolo seguro.
Para usar estas URL, debe generar un par de keys SSH en su computadora y agregar la key pública a su count de GitHub.

(énfasis en el must )

¿Por qué? (preguntado en 2015) . Si bien sshd se puede configurar para permitir el acceso anónimo , ningún sitio público consideraría configurarlo: es un riesgo de security demasiado grande.

necesita trabajar sin una key específica

Si necesita acceso anónimo, puede usar:

  • una URL https
  • una URL de git: git://github.com/<user>/<repo> , aunque usa el puerto 9418, que a menudo está bloqueado en un entorno empresarial.

El problema parece ser con las keys ssh, al less la respuesta es:

 Enter passphrase for key '/home/rlpowell/.ssh/id_rsa': Permission denied (publickey). 

Entonces, necesitas agregar tu key pública a github

Agregar una nueva key SSH a su count GitHub

También puedes ejecutar:

 ssh -T git@github.com 

para verificar la connection ssh a github

Es un repository público de GitHub y usted simplemente quiere sacarlo, para que pueda usar la URL HTTPS en su lugar:

 https://github.com/rlpowell/config.git 

https://github.com/rlpowell/config.git

Usted tiene un problema con su certificate. la solución fácil es simplemente crear una nueva y replace la anterior.

El problema puede ser causado por varios problemas, por ejemplo: input de file de host incorrecta, certificate ssh invocado y más.

así que lo mejor es crear un nuevo certificate y probarlo.

Simplemente siga estos pasos y configurará su key ssh en muy poco time:

  • Genere una nueva key ssh (u omita este paso si ya tiene una key)
    ssh-keygen -t rsa -C "your@email"

  • Una vez que tenga su key establecida en el directory home/.ssh (o Users/<your user>.ssh en Windows), Users/<your user>.ssh y copie el contenido


¿Cómo agregar sh key a la count de github?

  • Inicie session en la count de Github
  • Haga clic en el ranchero en la esquina superior derecha (Configuración)
    github settigns de cuenta
  • Haga clic en las SSH keys
    sección clave ssh
  • Haga clic en la Add ssh key
    Agregar clave ssh
  • Pega tu key y guarda

Y todo listo para ir 🙂

Para repositorys públicos no necesita ninguna contraseña. Puede clonar directamente usando su enlace https:

Por ejemplo, git clone https://github.com/rlpowell/config.git

No puede conectarse a un server SSH sin autenticarse.

Por lo tanto, es imposible clonar o detener SSH sin una key SSH registrada.

Tienes dos opciones:

  • Ejecute el trabajo cron como un usuario que tiene una key SSH asociada a una count GitHub (puede usar un file config para apuntar a un file key específico si lo desea).
  • Use HTTPS.

Creo que no puedes hacer esto usando SSH. Aquí hay una buena explicación:

Comparación del protocolo GitHub

Si desea clonar y extraer el material sin ninguna key, use HTTP (S).

Entonces con

 git clone http://github.com/rlpowell/config.git Klone nach 'config' ... warning: Leite nach https://github.com/rlpowell/config.git/ um remote: Counting objects: 1234, done. remote: Total 1234 (delta 0), reused 0 (delta 0), pack-reused 1234 Empfange Objekte: 100% (1234/1234), 2.01 MiB | 1.07 MiB/s, Fertig. Löse Unterschiede auf: 100% (758/758), Fertig. 

el ".git / config" se verá así:

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = http://github.com/rlpowell/config.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master 

Puedes cambiar ese file más adelante si ya clonaste o git config

Con esos ajustes, puedes git pull en cualquier momento.

Por qué usar el url git@github.com:rlpowell/config.git no funciona es debido a la siguiente razón:

La input git@github.com:rlpowell te obligará a autenticarte usando SSH. Github requiere que uses pares de keys si quieres authentication SSH.

Si desea tener un usuario automático de cronjob y aún usar SSH, cree como ese usuario un par de llaves y cargue el público en gitlab.

Pero si solo quieres clonar y tirar, HTTPS será más que suficiente. Por cierto, la authentication a través de HTTPS también es posible. Github le pide su nombre de usuario y contraseña si intenta hacer cambios. Por supuesto, esto no es recomendable, si está usando cronjobs.