Múltiples claves públicas para un usuario

55

Esta pregunta es similar a la autenticación de clave pública SSH: ¿se puede usar una clave pública para varios usuarios? pero es al revés.

Estoy experimentando el uso de ssh para que cualquier servidor ssh funcione para sus respuestas.

¿Puedo tener varias claves públicas vinculadas al mismo usuario? ¿Cuáles son los beneficios de hacerlo? Además, ¿se pueden configurar diferentes directorios principales para diferentes claves utilizadas (todas las cuales enlazan con el mismo usuario)?

Avísame si no estoy claro.

Gracias.

Russell
fuente

Respuestas:

80

Puedes tener tantas llaves como desees. Es una buena práctica usar conjuntos de claves privadas / públicas separadas para diferentes reinos de todos modos, como un conjunto para su uso personal, uno para su trabajo, etc.

Primero, genere dos pares de llaves separados, uno para el hogar y otro para el trabajo:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

A continuación, agregue una entrada a su ~/.ssh/configarchivo para elegir la clave que usará según el servidor al que se conecte:

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

A continuación, agregue el contenido de su id_rsa.work.puben ~/.ssh/authorized_keysla máquina de trabajo y haga lo mismo para la tecla de inicio en su máquina.

Luego, cuando se conecta al servidor doméstico, usa una de las teclas y al servidor de trabajo usa otra.

Tenga en cuenta que probablemente desee agregar ambas claves a su nombre ssh-agentpara no tener que escribir su frase de contraseña todo el tiempo.

Phil Hollenback
fuente
Esto funcionaría incluso si id_rsa.work.pub e id_rsa.home.pub se plantaran en el mismo servidor, ¿verdad? La razón es que podría estar conectándome a un servidor desde diferentes computadoras, por lo que me pregunto si tiene sentido tener diferentes pares de claves para cada computadora, incluso si se conectan al servidor como el mismo usuario. Gracias.
Russell
2
¡Absolutamente! En el lado del servidor, ssh verificará todas las claves públicas en el archivo autorizado_claves hasta que encuentre una coincidencia. Por lo tanto, puede colocar todas las claves en el mismo archivo autorizado_claves en el servidor sin problema.
Phil Hollenback
@PhilHollenback "ssh verificará todas las claves públicas en el archivo autorizado_claves hasta que encuentre una coincidencia". ¿Quiere decir que sigue enviando desafíos al cliente para cada clave pública hasta que el cliente demuestre que puede descifrar una? ¿Tienes alguna referencia para eso? (genuinamente interesado)
aaa90210
5

Tiene mucho sentido tener las claves de múltiples usuarios dirigidas a un usuario. Las razones comunes son:

  • apoyo
  • git (por ejemplo Push URL: git+ssh://git@git-server/~/repos/MyProject)
  • rsync
  • acceso común a una aplicación

En cuanto a tener diferentes homedirs, puede cambiarlos por clave al anteponer environment="HOME=/home/user1"la clave del usuario1 en el archivo autorizado_claves. Ver man authorized_keys.

Pruébalo, YMMV.

MikeyB
fuente