La mejor manera de utilizar varias claves privadas SSH en un cliente [cerrado]
Quiero usar varias claves privadas para conectarme a diferentes servidores o diferentes partes del mismo servidor (mis usos son la administración del sistema del servidor, la administración de Git y el uso normal de Git dentro del mismo servidor). Intenté simplemente apilar las claves en los id_rsa
archivos sin éxito.
Aparentemente una forma sencilla de hacer esto es usar el comando
ssh -i <key location> [email protected]
Eso es bastante engorroso.
¿Alguna sugerencia sobre cómo hacer esto un poco más fácilmente?
De mi .ssh/config
:
Host myshortname realname.example.com
HostName realname.example.com
IdentityFile ~/.ssh/realname_rsa # private key for realname
User remoteusername
Host myother realname2.example.org
HostName realname2.example.org
IdentityFile ~/.ssh/realname2_rsa # different private key for realname2
User remoteusername
Luego puedes usar lo siguiente para conectarte:
ssh myshortname
ssh myother
Etcétera.
Puede indicarle a ssh que pruebe varias claves seguidas al conectarse. Así es cómo:
$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_old
IdentityFile ~/.ssh/id_ed25519
# ... and so on
$ ssh server.example.com -v
....
debug1: Next authentication method: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa_old
debug1: read PEM private key done: type RSA
....
[server ~]$
De esta manera no es necesario especificar qué clave funciona con qué servidor. Solo usará la primera clave que funcione.
Además, solo ingresará una frase de contraseña si un servidor determinado está dispuesto a aceptar la clave. Como se vio arriba, ssh no intentó solicitar una contraseña .ssh/id_rsa
incluso si la tuviera.
Seguramente no supera una configuración por servidor como en otras respuestas, pero al menos no tendrá que agregar una configuración para todos y cada uno de los servidores a los que se conecte.
Las respuestas anteriores explicaron adecuadamente la forma de crear un archivo de configuración para administrar múltiples claves ssh. Creo que lo importante que también es necesario explicar es la sustitución de un nombre de host por un nombre de alias al clonar el repositorio .
Supongamos que el nombre de usuario de la cuenta de GitHub de su empresa es abc1234 . Y supongamos que el nombre de usuario de su cuenta personal de GitHub es jack1234.
Y supongamos que ha creado dos claves RSA, a saber, id_rsa_company e id_rsa_personal . Entonces, su archivo de configuración se verá así:
# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal
Ahora, cuando esté clonando el repositorio (llamado demo) desde la cuenta de GitHub de la empresa, la URL del repositorio será algo como:
Repo URL: [email protected]:abc1234/demo.git
Ahora, mientras lo hace git clone
, debe modificar la URL del repositorio anterior como:
git@company:abc1234/demo.git
Observe cómo github.com ahora se reemplaza con el alias "empresa" como lo hemos definido en el archivo de configuración.
De manera similar, debe modificar la URL de clonación del repositorio en la cuenta personal según el alias proporcionado en el archivo de configuración.
La respuesta de Randal Schwartz casi me ayudó en todo momento. Tengo un nombre de usuario diferente en el servidor, así que tuve que agregar la palabra clave Usuario a mi archivo:
Host friendly-name
HostName long.and.cumbersome.server.name
IdentityFile ~/.ssh/private_ssh_file
User username-on-remote-machine
Ahora puedes conectarte usando el nombre descriptivo:
ssh friendly-name
Se pueden encontrar más palabras clave en la página de manual de OpenSSH . NOTA: Es posible que algunas de las palabras clave enumeradas ya estén presentes en su archivo /etc/ssh/ssh_config .
ssh-add ~/.ssh/xxx_id_rsa
Asegúrate de probarlo antes de agregar con:
ssh -i ~/.ssh/xxx_id_rsa [email protected]
Si tiene algún problema con errores, a veces cambiar la seguridad del archivo ayuda:
chmod 0600 ~/.ssh/xxx_id_rsa