Várias chaves públicas para um usuário

55

Esta pergunta é semelhante à autenticação de chave pública SSH - uma chave pública pode ser usada para vários usuários? mas é o contrário.

Estou experimentando o uso do ssh para que qualquer servidor ssh funcione para suas respostas.

Posso ter várias chaves públicas vinculadas ao mesmo usuário? Quais são os benefícios de fazer isso? Além disso, diferentes diretórios pessoais podem ser definidos para diferentes chaves usadas (todas elas vinculadas ao mesmo usuário)?

Por favor, deixe-me saber se não estou claro.

Obrigado.

Russell
fonte

Respostas:

80

Você pode ter quantas chaves desejar. É uma boa prática usar conjuntos de chaves públicas / privadas separados para diferentes domínios, como um conjunto para seu uso pessoal, outro para o seu trabalho, etc.

Primeiro, gere dois pares de chaves separados, um para casa e outro para o trabalho:

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

Em seguida, adicione uma entrada ao seu ~/.ssh/configarquivo para escolher a chave a ser usada com base no servidor ao qual você se conecta:

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>

Em seguida, anexe o conteúdo do seu id_rsa.work.pubna ~/.ssh/authorized_keysmáquina de trabalho e faça o mesmo com a chave inicial na sua máquina doméstica.

Então, quando você se conecta ao servidor doméstico, usa uma das chaves e o servidor de trabalho, outra.

Observe que você provavelmente deseja adicionar as duas chaves à sua, ssh-agentpara não precisar digitar sua senha sempre.

Phil Hollenback
fonte
Isso funcionaria mesmo se id_rsa.work.pub e id_rsa.home.pub fossem plantados no mesmo servidor, certo? O motivo é que eu posso estar me conectando a um servidor a partir de computadores diferentes, então estou pensando se faz sentido ter pares de chaves diferentes para cada computador, mesmo que estejam se conectando ao servidor como o mesmo usuário. Obrigado.
Russell Russell
2
Absolutamente! No lado do servidor, o ssh verificará todas as chaves públicas no arquivo allowed_keys até encontrar uma correspondência. Portanto, você pode colocar todas as chaves no mesmo arquivo allowed_keys no servidor sem problemas.
Phil Hollenback
@PhilHollenback "ssh verificará todas as chaves públicas no arquivo allowed_keys até encontrar uma correspondência" - você quer dizer que continua enviando desafios ao cliente para cada chave pública até que o cliente prove que pode descriptografar uma? Você tem alguma referência para isso? (genuinamente interessado)
aaa90210
5

Faz muito sentido ter as chaves de vários usuários acessando um usuário. Os motivos comuns são:

  • cópia de segurança
  • git (por exemplo Push URL: git+ssh://git@git-server/~/repos/MyProject)
  • rsync
  • acesso comum a um aplicativo

No caso de ter homedirs diferentes, é possível alterá-los por chave, acrescentando environment="HOME=/home/user1"a chave do usuário1 no arquivo allowed_keys . Veja man authorized_keys.

Experimente, YMMV.

MikeyB
fonte