Cómo permitir subidas por push usando ssh en repositorios clonados desde la URL

El otro día me vi en la tesitura de tener que enviar cambios a un repositorio alojado remotamente, a partir de una copia del repositorio que tenía clonado en local.

La gracia está en que Github eliminó el acceso por login convencional en remoto hace años, y yo accidentalmente había clonado este repositorio usando la URL convencional.

Me refiero a cuando haces:

git clone [URL del repositorio]

, y te quedas tan ancho. Luego llega la hora de la verdad, haces tus cambios, les haces commit, y los intentas “subir” por git push, y te topas con el siguiente error, o similares:

remote: Invalid username or password. fatal: Authentiation failed.

Yo, en mi suma y vasta ignorancia acerca de cómo funcionan los caminos de Git (y GitHub), ya me imaginaba teniendo que reconstruir los commits en una copia del repositorio clonada “adecuadamente” (es decir, usando ssh).

Pero al final la solución fue mucho más fácil de lo que yo pensaba. Básicamente se trata de reconfigurar el método de inicio de sesión dentro de la copia del repo local, algo que podemos hacer con git remote.

La chicha del asunto es que a una copia de un repositorio clonado usando git clone le consta que la URL a la que apunta es la URL desde la que se clonó. Y en esta época en la que nos encontramos ya no se puede hacer login en remoto por la terminal así como así (por eso muuuchos hilos de stackOverflow y similares que datan de la década anterior han quedado obsoletos).

Pero si configuramos la URL para que incluya “lo que hace falta para que entienda que jale de autenticación por ssh” (de nuevo, nótese mi ignorancia), pues ya estaría.

Ojo que esto sólo aplica en situaciones donde, de nuevo, sí que dispones de acceso por ssh en la máquina donde has clonado el repo, y es simplemente una cuestión de hacérselo saber a git cuando te encuentres dentro de este repositorio clonado “por accidente” a través de URL. Para ello es importante que tengas habilitada en GitHub la autenticación por ssh usando llaves RSA.

Para solventar lo que nos ocupa, en una terminal, nos ubicamos dentro del directorio del repositorio que hemos clonado, y escribimos lo siguiente.

git remote set-url origin git@github.com:[usuario]/[nombre del repositorio].git

Con este simple comando ya pude hacer push de nuevo, con todos los commits que tenía acumulados, y listo.

PS: El repo en cuestión es https://github.com/scbe-lab/planarian_cell_type_allometry . #AutoBombo

Leave a Reply

Your email address will not be published. Required fields are marked *