Autenticação de chave SSH com vários computadores

21

Eu estava lendo sobre a autenticação de chave SSH e configurando-a nos meus 3 computadores em casa.

Eu tenho um computador principal, chame-o de "A" e dois outros, chame-os de "B" e "C".

Agora, com base na documentação que li, executei o ssh-keygen em B e C e coloquei as chaves públicas no computador A, assumindo que eu sempre SSH no computador A, se estiver em B ou C.

Mas acho que os exemplos de documentação que li pressupõem que apenas um computador doméstico será usado, digamos, outro computador externo. Na minha situação, faz sentido executar o ssh-keygen em um computador e copiar os arquivos para os outros? Dessa forma, eu só preciso fazer backup de um conjunto de chaves? E quando eu faço logon em um computador externo, só preciso configurá-lo com 1 conjunto de chaves, além de me opor à configuração nos três computadores.

Isso faz sentido? Alguma falha ou nota de advertência a considerar?

Obrigado.

linstar
fonte

Respostas:

29

Teoricamente, você pode fazer os dois lados, mas cada um deles tem suas vantagens e desvantagens:

Você pode realmente criar apenas 1 chave, dizer que é "sua" (como pessoa), protegê-la em algum lugar e copiá-la para qualquer computador que você usar. A vantagem é que você pode conectar-se a A de onde quer que vá, desde que possua sua chave privada SSH. A desvantagem é que, desde que você copie sua chave privada de um lugar para outro, seja qual for o caminho, você aumenta o risco de ser lida por alguém que esteja ouvindo a conexão. Pior, se o computador C for roubado, você precisará gerar novamente uma nova chave em todos os computadores que usam essa chave e distribuir uma nova.

Por outro lado, o uso de 1 chave por usuário @ computador tem a vantagem de ter mais "controle fino" sobre "o que" pode se conectar "onde". É a maneira mais comum de fazer.

Se, por exemplo, você entregasse o computador C a seu irmão / irmã / esposa / marido / amigo / cachorro ou a um ladrão (sem a sua aprovação), seria necessário remover a chave das chaves autorizadas de A Arquivo.

Portanto, mesmo que isso signifique "mais chaves em chaves_ autorizadas", sugiro a segunda abordagem.

mveroone
fonte
Você não pode descriptografar um fluxo ssh com a chave privada do cliente e, dependendo das configurações do servidor, também não é possível descriptografá-lo com a chave privada do servidor. zurlinux.com/?p=1772
Dan Merillat
É isso mesmo, e não é o que eu quis dizer. Eu quis dizer que se sua chave privada for roubada, pode-se usá-la para conectar-se ao computador A de qualquer outro lugar. Isso pode ser atenuado adicionando FROM = "<IP>" no início da linha autorizado_keys. (consulte a página de manual do ssh)
mveroone
depois copiá-lo eu tinha que inserir minha senha para usá-lo no meu outro computador, eu acho que é um pouco de segurança, pelo menos :)
OZZIE
3

Usar as mesmas teclas nos três computadores é definitivamente factível - eu faço isso o tempo todo, principalmente por conveniência.

Kwaio salienta corretamente que isso aumenta o risco de suas chaves serem comprometidas. Uma solução possível seria separar os componentes da chave pública e privada. Tão:

  • Todos os computadores têm sua chave pública no arquivo allowed_keys.
  • Você mantém 2 cópias da sua chave privada; um está em um pendrive no pescoço (para usar ao usar ssh para acessar outro computador) e o outro também em um pendrive em um cofre em algum lugar (caso você perca a primeira cópia).

Se um de seus computadores for roubado ou sua chave pública for comprometida de outra forma - bem, é apenas uma chave pública, e daí?

Se sua chave privada for roubada ou perdida, você imediatamente começará a gerar um novo par de chaves e atualizar as chaves públicas em todos os seus computadores.

HTH.

ALAN WARD
fonte
2
Ok, mas o que é HTH?
mikeserv
3
HTH = esperança que ajuda.
ALAN WARD
1
Seria bom ressaltar que, se você colocar sua chave privada em uma unidade flash, seria prudente transformá-la em uma chave privada protegida por senha. Inconvienence de ter de introduzir a senha de cada vez pode ser atenuado pelo uso de um agente (pagent em janelas, ssh-agente em Linux)
mveroone