Configuración de SSH en GitHub para Windows, Linux y Mac
Resumen
Usar SSH para interactuar con GitHub es una excelente forma de aumentar la seguridad y mejorar la comodidad en el manejo de repositorios. A continuación, te explicamos el paso a paso para generar y configurar tus llaves SSH en distintos sistemas operativos y cómo integrarlas en tu perfil de GitHub para mejorar la experiencia de clonación y autenticación.
¿Por qué es mejor usar SSH en lugar de HTTPS para GitHub?
Seguridad adicional: SSH permite autenticar la computadora específica que accede a los repositorios sin necesidad de ingresar una contraseña cada vez.
Comodidad: Evita la necesidad de escribir tu contraseña en cada operación con GitHub, agilizando el flujo de trabajo.
¿Cómo generar una llave SSH en Windows y Linux?
Instalar WSL si estás en Windows (opcional si usas Linux nativo).
Verificar que no tienes llaves previas: Ve al menú de "Code" en GitHub y verifica que la opción de SSH no tenga llaves configuradas.
Generar la llave SSH: En la terminal, usa el comando:
ssh-keygen -t ed25519 -C "tu_correo@example.com"
-t ed25519 establece el nivel de encriptación.
-C añade un comentario con tu correo, útil para identificar la llave en GitHub.
Guardar y proteger la llave:
Usa el nombre por defecto y añade una contraseña segura.
La llave pública se guarda en el directorio .ssh, generalmente nombrada id_ed25519.pub.
Configurar el agente SSH: Activa el agente de SSH y añade la llave privada:
eval"$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519
¿Cómo añadir la llave SSH a GitHub?
Abrir el archivo de la llave pública (id_ed25519.pub) y copia el contenido.
En GitHub, ve a Settings > SSH and GPG keys > New SSH key y pega la llave.
Nombra la llave de acuerdo a la computadora en la que estás configurándola.
¿Qué pasos adicionales seguir en Mac?
Crear el archivo de configuración SSH: Abre o crea el archivo config dentro del directorio .ssh.
Agregar parámetros específicos de Mac: Añade la configuración para integrar SSH con el sistema Keychain:
Ed25519 es recomendado si prefieres mayor seguridad y eficiencia en un entorno moderno.
RSA de 4096 bits es ideal si necesitas alta compatibilidad y puedes tolerar un poco más de consumo de recursos.
67
Para configurar SSH en GitHub, sigue estos pasos:
Genera una clave SSH:
Abre tu terminal.
Ejecuta: ssh-keygen -t ed25519 -C "tu_correo@example.com" y sigue las instrucciones para crear la clave.
Inicia el agente SSH:
Ejecuta: eval "$(ssh-agent -s)".
Luego, agrega tu clave privada: ssh-add ~/.ssh/id_ed25519.
Copia la clave pública:
Usa cat ~/.ssh/id_ed25519.pub para visualizarla y cópiala.
Añade la clave a GitHub:
Ve a GitHub, en "Settings" > "SSH and GPG keys", y selecciona "New SSH key". Pega tu clave pública.
Prueba la conexión:
Ejecuta: ssh -T git@github.com. Deberías ver un mensaje de éxito.
Con esto, habrás configurado SSH para GitHub de forma segura y eficiente.
Las llaves SSH se crean desde una carpeta general del sistema, no específicamente desde la carpeta del proyecto. Puedes generarlas en el directorio ~/.ssh (o C:\Users\tu_usuario\.ssh en Windows) usando el comando ssh-keygen. Esto permite que las llaves sean accesibles desde cualquier proyecto que requiera autenticación SSH, facilitando su uso en múltiples repositorios.
Sí, es una buena idea crear una llave SSH en cada laptop y enlazarlas a tu cuenta de GitHub. Esto te permite acceder de forma segura a tus repositorios desde ambas computadoras. Recuerda que cada llave SSH es única, por lo que necesitarás añadir la llave pública de cada laptop a tu cuenta de GitHub en la sección de "SSH and GPG keys" en la configuración. Así garantizarás que solo tus dispositivos autorizados puedan comunicarse con tu cuenta de GitHub de manera segura.
Esta clase deberia de estar en la configuracion de git, ya que es algo super importante como para tener la tan abajo?
Porque solo funciona cuando dejas de trabajar en un entorno local y comienzas a hospedar tu código en un entorno remoto, hacer esto en un entorno git aislado no ofrece grandes ventajas.
Hola Daniel, el asunto es que esto es específicamente de GitHub y no de Git. Recuerda que podemos usar Git sin la existencia de GitHub por lo que no tendríamos que configurar nada de estas cosas, solo si trabajamos en un entorno en equipo o colaborativo ahi si.
Saludos.
Para remover la carpeta .ssh y crear nuevas llaves, puedes seguir estos pasos:
Abre tu terminal.
Usa el siguiente comando para eliminar la carpeta .ssh:
rm -rf ~/.ssh
Una vez eliminada, puedes crear nuevas llaves SSH usando:
ssh-keygen -t ed25519 -C"tu_email@example.com"
Sigue las instrucciones para completar la creación de las nuevas llaves.
Recuerda que al eliminar la carpeta .ssh, perderás todas las llaves almacenadas, así que asegúrate de que no las necesites antes de proceder.
No le recomiendo a nadie usar rm para borrar cosas de configuración, luego te das cuenta que no había que borrarlo y te tienes que «convertir en hacker» para recuperar la información jaja, mejor usar gio trash, envia la información a la papelera del sistema.
🧠Uso de SSH con GitHub
🔒 ¿QUÉ ES SSH Y POR QUÉ USARLO?
SSH (Secure Shell) → método seguro para conectar tu computadora con GitHub.
Ventajas principales:
🔐 Seguridad: tu equipo se autentica sin contraseñas repetidas.
⚡ Comodidad: evita escribir credenciales en cada acción (git push, git pull, etc.).
💡 Ideal para quienes trabajan frecuentemente con repositorios remotos.
⚙️ ANTES DE EMPEZAR
🪟 Windows: instala WSL (Windows Subsystem for Linux).
⚙️ Esto descarga el repositorio sin pedir tu contraseña.
💡 RECUERDA
🔸 Protege tu llave privada (nunca la compartas).
🔸 Tu llave pública sí puede subirse a GitHub.
🔸 Con SSH, tu flujo de trabajo será:
✅ más rápido · 🔐 más seguro · 💼 más profesional.
Este comentario merece tener 1000 corazones verdes
Hola, estoy trabajando desde Mac y casi en el ultimo paso, cuando ingreso el comando ssh -T no me sale el mensaje que sale en el video, arriba cambia el titulo y luego sale un mensaje de Connection closed. No entiendo :(
Hola, realizo los pasos para registrar la identidad para no colocar la passphrase a cada momento pero cuando cierro la terminal pierde esa configuración, ¿como puedo hacer para que quede fijo?
Qué terminal estás utilizando?
WSL 2 ubuntu con zsh
Para configurar SSH en Git y GitHub, sigue estos comandos:
Generar una nueva llave SSH:
ssh-keygen -t ed25519 -C "tu_correo@example.com"
Iniciar el agente SSH:
eval"$(ssh-agent -s)"
Agregar tu llave privada al agente:
ssh-add ~/.ssh/id_ed25519
Copia tu llave pública:
cat ~/.ssh/id_ed25519.pub
Añade la llave a GitHub: ve a Settings > SSH and GPG keys > New SSH key y pega la llave.
Para manejar múltiples cuentas, crea un archivo de configuración:
Esto te permite usar diferentes llaves para distintas cuentas.
El comando eval "$(ssh-agent -s)" se utiliza para iniciar el agente SSH en tu terminal. El agente SSH es un programa que mantiene las claves privadas en memoria, lo que permite que puedas usar estas claves para autenticarte sin necesidad de ingresar tu contraseña en cada conexión. Al usar eval, ejecutas el comando y configuras las variables de entorno necesarias para que tu sesión de terminal reconozca el agente y pueda usar las llaves SSH que hayas agregado. Esto facilita el uso de conexiones SSH en proyectos, como los que gestionas en GitHub.
Por nada del mundo compartas la llave privada de SSH que es la que no tiene el .pub son cosas que tenes que tener cuidado como el comando rm -hard
Tuve un problema al intentar establecer la conecxion ssh a github con el comando "ssh -T git@github.com"
me dice lo siguiente:
sign_and_send_pubkey: signing failed for ED25519 "/home/developer/.ssh/id_ed25519" from agent: agent refused operation
como lo puedo solucionar? alguien me puede orientar lo agradeceria.
El error que estás viendo indica que el agente SSH no pudo firmar la solicitud con tu clave privada ED25519. Esto puede deberse a varios motivos, pero aquí te dejo algunos pasos para solucionar el problema:
### 1. **Verifica que el agente SSH esté en ejecución**
Asegúrate de que el agente SSH esté en ejecución y que tenga tu clave privada agregada.
```bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
```
Si ssh-add te pide una contraseña, ingrésala. Esto debería agregar tu clave privada al agente SSH.
### 2. **Verifica los permisos de los archivos de claves**
Asegúrate de que los permisos de los archivos de claves sean correctos. Los archivos de claves SSH deben tener permisos restrictivos para que funcionen correctamente.
```bash
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 700 ~/.ssh
```
### 3. **Verifica que la clave pública esté agregada en GitHub**
Asegúrate de que la clave pública (id\_ed25519.pub) esté agregada en tu cuenta de GitHub.
1. Copia la clave pública al portapapeles:
```bash
cat ~/.ssh/id_ed25519.pub
```
2. Ve a GitHub y navega a **Settings** > **SSH and GPG keys**.
3. Haz clic en **New SSH key** o **Add SSH key**.
4. Pega la clave pública en el campo correspondiente y guarda los cambios.
### 4. **Reinicia el agente SSH**
Si el agente SSH no está funcionando correctamente, puedes intentar reiniciarlo:
```bash
eval "$(ssh-agent -k)"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
```
### 5. **Verifica la configuración de SSH**
Asegúrate de que tu archivo de configuración de SSH (~/.ssh/config) esté correctamente configurado. Debería tener algo como esto:
```plaintext
Host github.com
IdentityFile ~/.ssh/id_ed25519
User git
```
### 6. **Prueba la conexión nuevamente**
Después de realizar los pasos anteriores, prueba la conexión nuevamente:
Si todo está configurado correctamente, deberías ver un mensaje como:
```plaintext
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
```
### 7. **Revisa el agente SSH en segundo plano**
Si estás utilizando un entorno gráfico, asegúrate de que el agente SSH esté correctamente configurado en segundo plano. Algunos entornos de escritorio tienen sus propios manejadores de claves SSH que pueden interferir con el agente SSH tradicional.
### 8. **Revisa si hay conflictos con otras claves**
Si tienes múltiples claves SSH, asegúrate de que estás utilizando la correcta. Puedes listar las claves agregadas al agente SSH con:
```bash
ssh-add -l
```
Si ves que la clave incorrecta está siendo utilizada, puedes eliminarla con:
```bash
ssh-add -d ~/.ssh/id_rsa # Reemplaza con la clave que deseas eliminar
```
Luego, agrega la clave correcta nuevamente.
Si después de seguir estos pasos el problema persiste, podría ser útil revisar los logs de SSH para obtener más detalles sobre el error. Puedes hacerlo ejecutando:
ssh -T -v <git@github.com>
Esto te dará una salida detallada que puede ayudarte a diagnosticar el problema.
Si es que no usaste IA eso me arrojo, todavía no estoy viendo este video pero lo vere pronto pero espero que te haya servido de ayuda si es que no lograste resolverlo.
El archivo "config" debe permanecer en el directorio .ssh de tu usuario en macOS, no en la raíz del sistema operativo. Este directorio se encuentra típicamente en la ruta ~/.ssh/. Mantener el archivo "config" en esta ubicación asegura que tu configuración de SSH sea reconocida correctamente y se mantenga organizada, facilitando la gestión de conexiones a diferentes servidores, como GitHub.
buen apunte
Si alguien al ejecutar el siguiente comando:
ssh -T git@github
no les genera nada, prueben lo siguiente:
vim ~/.ssh/config, pueden usar nano si les parece ma's comodo.
copien y pegen lo siguiente:
Host github.com
HostName ssh.github.com
Port 443 User git IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
ahora vuelvan a ejecutar otra vez el comando:
ssh -T
y continuen con el video.
:)
Para crear llaves SSH en Windows, puedes usar el siguiente comando en tu terminal (por ejemplo, en Git Bash o WSL):
ssh-keygen -t ed25519 -C "tu-correo@ejemplo.com"
Esto generará un par de llaves. La llave privada se guardará en ~/.ssh/id_ed25519 y la llave pública en ~/.ssh/id_ed25519.pub. Luego, añade la llave pública a tu cuenta de GitHub siguiendo los pasos mencionados en el material.
Las tres opciones para clonar un repositorio tienen diferencias importantes:
HTTPS
Más simple y universal: funciona en casi cualquier red y firewall
Autenticación: requiere tu nombre de usuario y un token de acceso personal (PAT) cada vez que haces push/pull
Ventaja: no necesitas configuración previa, es plug-and-play
Desventaja: puede ser tedioso ingresar credenciales repetidamente (aunque puedes usar un credential helper para guardarlas)
Ejemplo: git clone
SSH
Más seguro y conveniente: usa un par de llaves criptográficas (pública/privada)
Autenticación: una vez configuradas las llaves SSH, no necesitas ingresar credenciales cada vez
Ventaja: después de la configuración inicial, es muy cómodo para uso frecuente
Desventaja: requiere generar y configurar llaves SSH previamente
Puede bloquearse: algunos firewalls corporativos bloquean el puerto 22
Herramienta oficial de GitHub: es más que solo clonar, permite gestionar issues, PRs, releases, etc.
Autenticación integrada: maneja automáticamente la autenticación con GitHub
Ventaja: experiencia completa de GitHub desde la terminal
Desventaja: requiere instalar la herramienta CLI aparte
Ejemplo: gh repo clone usuario/repo
Recomendación: Si trabajas frecuentemente con Git, SSH es lo mejor. Si es ocasional o estás empezando, HTTPS es más directo. GitHub CLI es excelente si quieres una integración profunda con GitHub más allá de solo clonar.
LA LLAVE SSH SOLO FUNCIONA EN UNA MISMA COMPUTADORA, ESTO AUMENTA LA SEGURIDAD. ?
Hola, Diego Mauricio. Es una excelente pregunta.
No es que la llave "solo funcione" en una computadora por una limitación técnica, sino que tú decides que sea así por seguridad.
Imagina que la llave SSH es como una llave física de tu casa:
La llave privada es la que guardas en tu bolsillo (tu computadora).
La llave pública es la cerradura que instalas en la puerta (tu cuenta de GitHub).
Si quieres entrar desde otra computadora, debes generar un nuevo par de llaves específico para ese equipo. Esto es mucho más seguro porque, si alguna vez pierdes una de tus computadoras, simplemente entras a GitHub y "cambias la cerradura" (borras la llave pública de ese equipo específico) sin afectar a tus otras máquinas.
Para profundizar, te recomiendo revisar:
"Seguridad y buenas prácticas en GitHub"
"Administración de GitHub"
💡 Idea 18 ⭐⭐⭐⭐⭐ Configurar SSH es un "one-time setup" que te ahorra horas de fricción a largo plazo.
primero tenia un repositorio el cual cloné con HTTPS, despues miré esta clase para clonar con SSH y ahora está configurada así, ¿qué pasa con el otro repositorio que previamente clone con https? ¿seguirá igual con esa conexión, pidiendome la contraseña? ¿o automáticamente cambia su autenticación a ssh?
Ricardo, esa es una excelente pregunta. La respuesta corta es: no cambia automáticamente.
Cuando clonaste el primer repositorio usando HTTPS, Git guardó esa dirección específica en un archivo de configuración dentro de la carpeta .git de ese proyecto. Por lo tanto, ese repositorio seguirá intentando comunicarse con GitHub mediante HTTPS y te pedirá tus credenciales.
Para cambiarlo a SSH y dejar de usar la contraseña, puedes actualizar la "URL remota" de ese repositorio manualmente con este comando dentro de la carpeta del proyecto:
# Cambia la URL de origen a SSHgit remote set-url origin git@github.com:usuario/nombre-del-repo.git
(Asegúrate de reemplazar usuario/nombre-del-repo con la ruta real que obtienes al copiar el link SSH de GitHub).