Sequência de autenticação SSH e arquivos de chaves: explicar

2

Como pano de fundo para solucionar vários problemas usando SSH e rsync com pares de chaves, eu queria uma visão geral direta da sequência de eventos que ocorrem durante a autenticação SSH e como cada um dos vários arquivos de cliente e host desempenha seu papel.

O Google encontrou muitas explicações em nível detalhado, com um escopo restrito ou cujo amplo escopo estava repleto desses detalhes. Sem mencionar muitas explicações incorretas ou confusas e posts no fórum.

Acabei criando alguns diagramas para esclarecer duas coisas:

  • Quais arquivos e ações estão envolvidos na preparação da comunicação SSH usando chaves
  • O que esses arquivos fazem durante o processo de estabelecer uma conexão.

Vou postar isso em uma resposta abaixo.

    
por gwideman 16.10.2018 / 01:57

1 resposta

2

A resposta a seguir explica os arquivos necessários para se preparar para a autenticação ssh usando pares de chaves pública-privada ("Public Key Infrastructure" ou "PKI") e como esses arquivos são usados durante uma sessão ssh real. Alguns detalhes aqui usam nomes e diretórios que se aplicam ao linux, mas os princípios se aplicam a todas as plataformas, que usam programas e arquivos paralelos a eles. As principais características de interesse são:

  • Máquina do usuário
    • Par de chaves de usuário: Público e privado, que o usuário do lado do cliente deve criar usando ssh-keygen, criando arquivos com nomes como:
      • ~ / .ssh / id_rsa (particular) e
      • ~ / .ssh / id_rsa.pub (público)
      • Na preparação, deve ser fornecido ao arquivo authorized_keys do host
    • ~ / .ssh / known_hosts
      • que recebe a chave pública do servidor, se o usuário a aceitar no primeiro login.
  • Máquina host (servidor)
    • Par de chaves do host: público e privado
      • são criados automaticamente em algum momento, como a instalação do openssh no servidor. Nomes típicos:
      • / etc / ssh / ssh_host_rsa_key (privado)
      • / etc / ssh / ssh_host_rsa_key.pub (público)
      • o host oferece a chave pública para o usuário do lado do cliente na primeira vez que o usuário do lado do cliente tenta se conectar ao ssh. O cliente armazenará a chave do host em known_hosts
    • ~ / .ssh / authorized_keys
      • Na preparação, deve receber a chave pública de cada usuário que fará o login.
  • Sequência de eventos em uma sessão SSH real (ou rsync), mostrando como os arquivos estão envolvidos.

(Note que existem dois algoritmos de assinatura comuns diferentes, RSA e DSA, então onde esta discussão usa 'rsa', a string 'dsa' pode aparecer no lugar.)

Configuração / preparação

conexãoSSHeuso

Espero que esses diagramas sejam úteis.

    
por 16.10.2018 / 01:57