Quando exatamente o SSH-agent usa minha private_key para conectar-se a um servidor remoto?

1

Eu preciso de algumas noções básicas sobre o SSH, para me ajudar a entender o processo de conexão do SSH.

Eu tenho servidor Ubuntu no meu virtualbox e Ubuntu desktop no meu host. Estabeleci conexão com minha VM adicionando id_rsa.pub a authorized_keys no controle remoto (adicionado por ssh-copy-id). id_rsa.pub é gerado por ssh-keygen , bem como id_rsa .

Conectei-me com êxito ao meu controle remoto sem digitar a senha, mas não entendi exatamente e por que preciso do arquivo id_rsa , que é armazenado junto com id_rsa.pub ?

Eu tentei apagar esta chave privada, mas apesar disso a conexão ainda funciona! Na minha opinião, esse arquivo não precisa estabelecer conexão com minha VM.

    
por Timur Fayzrakhmanov 15.01.2014 / 13:26

4 respostas

3

Para "explorar" como o ssh está funcionando, você pode usar os verbose flags. Por exemplo,

ssh -v ...

dará informações sobre o aperto de mão. Você pode usar vários v , com um máximo de três, para ter ainda mais informações de depuração:

ssh -vvv ...

No entanto, vale a pena ler o link da página da Wikipédia postada por @darent para entender a criptografia de chave assimétrica . Muitos links úteis sobre os detalhes podem ser encontrados em esta pergunta no SuperUser .

    
por Rmano 15.01.2014 / 17:45
3

Deixe-me tentar explicar isso com um exemplo. Suponha que eu confie em você e queira que você faça SSH no meu computador e faça alguma coisa. Eu posso te dizer minha senha ou você pode me dar sua chave pública.

Se você me der sua chave pública, quando tentar entrar no meu computador, seu cliente SSH usará sua chave privada para gerar a solicitação de autenticação criptografada e enviá-la para o meu computador. Meu computador usará sua chave pública para descriptografar a solicitação de autenticação criptografada e, assim, autenticar que é você e não outra pessoa tentando invadir meu computador.

Observação: o par de chaves público-privado não é usado para criptografar a transmissão entre dois computadores. Portanto, assim que a conexão for estabelecida, as chaves não serão necessárias até que a conexão seja finalizada e uma nova conexão seja tentada. O SSH tem seu próprio sistema interno de criptografia de dados que não depende do par de chaves público-privadas.

Então, aceitando sua chave pública, confiei em você para entrar no meu computador. Se você quebrar minha confiança, deletarei sua chave pública do meu computador. Então você não poderá mais usar o SSH no meu computador.

Se você der sua chave privada a outra pessoa (ou se alguém a roubar), essa pessoa poderá fingir ser você. Se eu descobrir que você deu sua chave privada a outra pessoa, eu apagarei sua chave pública do meu computador. Então nem você nem a outra pessoa poderão usar o SSH no meu computador.

A chave pública que você me deu é inútil se eu tentar o SSH no seu computador, já que isso é bom apenas para descriptografar as informações geradas com a sua chave privada. Se você quiser que eu conecte o SSH ao seu computador, você terá que colocar minha chave pública no lugar certo em seu computador.

O Ubuntu armazena suas chaves privadas no software de gerenciamento de senhas, chamado Senha e Chaves de Criptografia:

Note que o separador do meio As minhas chaves pessoais . Isso para proteger sua chave privada de ser roubada (e acidentalmente excluir sua chave privada).

Aqui estão mais informações sobre o Seahorse gerenciador de senhas.

Espero que isso ajude

    
por user68186 15.01.2014 / 18:47
1

Você não deve "usar" manualmente sua chave privada. A criptografia pública / privada é baseada no uso de duas chaves, uma que vai a público e outra que fica no seu computador, a privada.

Sempre que alguém enviar uma mensagem criptografada para você ou você precisar usar autenticação, como o SSH, ela usará a chave pública para criptografar os dados. Depois de obter os dados, a única chave que pode descriptografá-los é a chave privada.

Pense nisso como se você tivesse duas chaves: o que estiver bloqueado com uma chave, só pode ser desbloqueado com o oposto. Portanto, não apague sua chave privada porque isso tornaria o público inútil.

Se você quiser saber mais, pode conferir este link para a Wikipédia , ele tem uma boa explicação sobre a assimetria criptografia de chaves.

    
por animaletdesequia 15.01.2014 / 15:07
0

Você quer dizer que excluiu a chave privada no servidor? Se for esse o caso, ele é usado apenas quando sshing FROM desse servidor. Não teria impacto no sshing para esse servidor.

    
por VTC 15.01.2014 / 18:08