La mejor manera de utilizar varias claves privadas SSH en un cliente [cerrado]

Resuelto Justin asked hace 14 años • 21 respuestas

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_rsaarchivos 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?

Justin avatar Mar 11 '10 01:03 Justin
Aceptado

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.

Randal Schwartz avatar Mar 10 '2010 18:03 Randal Schwartz

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_rsaincluso 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.

spacesix avatar Oct 20 '2015 04:10 spacesix

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.

oblivion avatar Jul 19 '2016 09:07 oblivion

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 .

peron avatar Sep 30 '2010 07:09 peron
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
princepangaea avatar Aug 15 '2010 05:08 princepangaea