|
| 1 | +# SSH Key Manager |
| 2 | + |
| 3 | +Crea y cambia entre múltiples claves SSH fácilmente. |
| 4 | + |
| 5 | +### El problema |
| 6 | + |
| 7 | +Herramientas como GitHub, GitLab y Bitbucket utilizan claves SSH para autenticar a los usuarios y no permiten el uso de la misma clave para diferentes cuentas. |
| 8 | + |
| 9 | +Si utilizas tu ordenador para trabajar y también para proyectos personales, es probable que necesites múltiples claves SSH para diferentes cuentas (por ejemplo, una para el trabajo, otra para un cliente, otra para proyectos personales). Manejar estas claves manualmente puede ser tedioso. |
| 10 | + |
| 11 | +Este script simplifica el proceso, permitiendo crear y cambiar rápidamente entre diferentes claves SSH. |
| 12 | + |
| 13 | +### Requisitos |
| 14 | + |
| 15 | +- Sistema operativo Unix (Linux, macOS) |
| 16 | +- Conocimientos básicos de scripting y uso de la línea de comandos (opcional) |
| 17 | +- Git instalado para clonar el repositorio |
| 18 | + |
| 19 | +### Instalación |
| 20 | + |
| 21 | +1. Clonar el repositorio: |
| 22 | + ```bash |
| 23 | + cd ~ |
| 24 | + git clone https://github.com/jjpeleato/bash-ssh-key-manager.git ssh-key-manager |
| 25 | + ``` |
| 26 | +2. Copia los scripts (`initialize.sh` y `environment.sh`) en el directorio `.ssh`: |
| 27 | + ```bash |
| 28 | + cd ~/ssh-key-manager |
| 29 | + cp *.sh ~/.ssh/ |
| 30 | + ``` |
| 31 | +3. Dar permisos de ejecución a los scripts: |
| 32 | + ```bash |
| 33 | + cd ~ |
| 34 | + chmod +x .ssh/initialize.sh |
| 35 | + chmod +x .ssh/environment.sh |
| 36 | + ``` |
| 37 | +4. Eliminar el repositorio clonado: |
| 38 | + ```bash |
| 39 | + cd ~ |
| 40 | + rm -rf ssh-key-manager |
| 41 | + ``` |
| 42 | +5. ¡Fin y feliz uso! |
| 43 | + |
| 44 | +### Uso |
| 45 | + |
| 46 | +1. Ejecuta el script `initialize.sh` para crear las claves SSH que necesites. Sigue las instrucciones en pantalla, es muy fácil. Recuerda añadir una `passphrase` segura para cada clave. |
| 47 | + ```bash |
| 48 | + cd ~/.ssh |
| 49 | + sh initialize.sh |
| 50 | + ``` |
| 51 | +2. Cada vez que necesites cambiar de clave SSH, ejecuta el script `environment.sh` y selecciona la clave deseada. |
| 52 | + ```bash |
| 53 | + cd ~/.ssh |
| 54 | + sh environment.sh |
| 55 | + ``` |
| 56 | +3. ¡Listo! Ahora cambia entre tus claves SSH fácilmente. |
| 57 | + |
| 58 | +**Nota:** No olvides añadir las claves públicas generadas a las plataformas correspondientes (GitHub, GitLab, Bitbucket, etc.). |
| 59 | + |
| 60 | +### Aclaraciones |
| 61 | + |
| 62 | +- El script `initialize.sh` crea un archivo llamado `loki.txt` en el directorio `~/.ssh` que contiene un resumen de las claves creadas. Es importante no borrar este archivo a menos que desees reiniciar el proceso. |
| 63 | +- Las claves SSH se almacenan en el directorio `~/.ssh` dentro de subdirectorios nombrados según la cuenta (por ejemplo, `work`, `personal`). |
| 64 | +- Las claves creadas usan el formato `ed25519`, que es más seguro y eficiente que el formato RSA tradicional. |
| 65 | +- Si creas para FileZilla un archivo `.ppk` a partir de tu clave, llama al archivo de la siguiente forma `id_rsa_filezilla.ppk` y guárdalo en el mismo subdirectorio que la clave original. El script `environment.sh` lo detectará automáticamente. |
| 66 | + |
| 67 | +### Migración desde clave SSH existente |
| 68 | + |
| 69 | +Si ya tienes una clave SSH existente y deseas integrarla en este sistema, sigue estos pasos: |
| 70 | + |
| 71 | +1. Mueve tu clave SSH en `~/.ssh` dentro de un subdirectorio (por ejemplo, `~/.ssh/work`, `~/.ssh/personal`). |
| 72 | +2. Si existe. Elimina el archivo `~/.ssh/loki.txt`. |
| 73 | +3. Ejecuta el script `initialize.sh` y en el proceso de creación de claves, utiliza el mismo nombre que el nombre del subdirectorio donde has movido tu clave. El script lo detectará y lo tendrá en cuenta automáticamente. |
| 74 | +4. Sigue las instrucciones en pantalla para completar el proceso. |
| 75 | + |
| 76 | +### Método nativo (alternativa) |
| 77 | + |
| 78 | +Usa el script `initialize.sh` para generar tus claves SSH y, a continuación, crea o edita el archivo `~/.ssh/config` con las configuraciones necesarias. |
| 79 | + |
| 80 | +A continuación, un ejemplo de configuración para dos cuentas de GitHub (trabajo y personal): |
| 81 | + |
| 82 | +```text |
| 83 | +# Work account |
| 84 | +Host github-work |
| 85 | + HostName github.com |
| 86 | + User git |
| 87 | + IdentityFile ~/.ssh/work/id_rsa |
| 88 | + IdentitiesOnly yes |
| 89 | +
|
| 90 | +# Personal account |
| 91 | +Host github-personal |
| 92 | + HostName github.com |
| 93 | + User git |
| 94 | + IdentityFile ~/.ssh/personal/id_rsa |
| 95 | + IdentitiesOnly yes |
| 96 | +``` |
| 97 | + |
| 98 | +**Nota:** Asegúrate de reemplazar en la URL de tu repositorio remoto `github.com` por `github-work` o `github-personal` según corresponda. |
| 99 | + |
| 100 | +```bash |
| 101 | +git remote -v |
| 102 | +git remote set-url origin git@github-personal:jjpeleato/bash-ssh-key-manager.git |
| 103 | +``` |
| 104 | + |
| 105 | +### Estructura del proyecto |
| 106 | + |
| 107 | +``` |
| 108 | +ssh-key-manager/ |
| 109 | +├── .husky/ |
| 110 | +│ ├── commit-msg |
| 111 | +│ ├── post-merge |
| 112 | +│ └── post-rewrite |
| 113 | +├── .editorconfig |
| 114 | +├── .gitignore |
| 115 | +├── commitlint.config.cjs |
| 116 | +├── environment.sh # Archivo principal para cambiar entre claves SSH |
| 117 | +├── initialize.sh # Archivo principal para crear claves SSH |
| 118 | +├── LICENSE |
| 119 | +├── package.json |
| 120 | +└── README.md |
| 121 | +``` |
| 122 | + |
| 123 | +### Contribución |
| 124 | + |
| 125 | +¡Las contribuciones son bienvenidas! Por favor, haz un `fork` del repositorio y envía un `pull request` con tus cambios. |
| 126 | + |
| 127 | +### Soporte |
| 128 | + |
| 129 | +Para errores o funcionalidades nuevas, por favor, abre un `issue` en el repositorio o contacta conmigo directamente. |
| 130 | + |
| 131 | +### Fin |
| 132 | + |
| 133 | +Más información en los siguientes commits. Si es necesario. |
| 134 | + |
| 135 | +Saludos, **@jjpeleato**. |
0 commit comments