Estou fazendo a primeira experiência com ssh-copy-id, certo?

2

Toda vez que eu quero que alguém acesse uma máquina, peço que façam uma id de cópia ssh. Eu faço isso depois de criar uma conta de usuário na máquina e uma senha aleatória. Isso geralmente acontece por email.

Entre o período de pedir que a pessoa faça um ssh-copy-id e eles agem nela (o que pode levar de algumas horas a dias), tenho que manter minha máquina aberta para o login de senha “ PasswordAuthentication yes ”.

Existe uma maneira de melhorar esse fluxo de trabalho? Não quero expor o sshd ao login de senha e muitas vezes entre a conversa acabo esquecendo de definir PasswordAuthentication no .

    
por Quintin Par 03.07.2017 / 18:07

3 respostas

1

  1. Peça-lhes para gerar a chave por si mesmos. Enviar senhas ou chaves privadas pelo email nunca é uma boa ideia. Mesmo que o transporte deva ser seguro, os e-mails estão mentindo há anos em pelo menos dois servidores que podem não ser confiáveis (freemails, ...).

  2. A exposição da autenticação de senha apenas deste caso de uso não vale a pena. Você pode simplesmente esquecer de recuperá-lo ou reiniciar o serviço e acabar com a autenticação por senha aberta. Se você precisar, basta ativá-lo para esse usuário único:

    Match user new-user
      PasswordAuthentication yes
    
  3. Crie um script que defina a chave pública e corrija as permissões para um novo usuário. São poucas linhas diretamente nesse servidor ou até mesmo você pode usar a opção ssh-copy-id with -f (se você já habilitou a senha auth) para minimizar a janela de abertura do servidor.

  4. Se você deseja ter um controle das chaves públicas usadas para autenticação e evitar que os usuários gravem / modifiquem suas chaves autorizadas, você pode configurar o AuthorizedKeysFile para algum diretório comum, onde você terá um controle do acesso, por exemplo

    AuthorizedKeysFile /etc/ssh/authorized_keys/%u
    

    Isso pesquisará o arquivo de um usuário new-user in /etc/ssh/authorized_keys/new_user . Os arquivos criados no diretório em /etc/ devem ter permissões padrão adequadas para ssh.

por 03.07.2017 / 22:22
1

Você pode fazê-lo da mesma forma que o Hetzner Online (um ISP alemão) faz isso com seus VPSs Linux ao configurar a autenticação de chave pública (que eles oferecem como opção durante o provisionamento, como uma alternativa para definir uma senha para o root conta).

Peça ao usuário para enviar uma chave pública antes para permitir que eles acessem a conta. Nunca defina uma senha para a conta de usuário, e se você quer, manter tudo, mas PubkeyAuthentication desligado o tempo todo em seu sshd. Insira a chave fornecida pelo usuário nas próprias ~ / .ssh / authorized_keys do usuário assim que você criar a conta, ou imediatamente após recebê-la, mas antes de permitir o acesso. Assumindo o OpenSSH, você pode até mesmo configurar seu servidor SSH para aceitar somente a autenticação de senha do host local (usando uma sub-rotina Match em / etc / ssh / sshd_config), que deve permitir que você use o ssh-copy-id localmente, garantindo que como as permissões e a propriedade estão definidas corretamente.

Dessa forma, o usuário retém o controle total sobre sua chave privada em todos os momentos, e nenhum dado que não seja compartilhado de qualquer maneira é transmitido. Você também não os treina para aceitar alguém gerando a chave privada. A Amazon talvez consiga acertar - eu teria minhas dúvidas, pessoalmente, e certamente desejaria substituir o par de chaves imediatamente - - mas quais são as chances de você investir tanto na obtenção do processo correto?

Você deve, idealmente, pedir que a chave pública seja transmitida por um canal criptografado, mas isso não é tanto para privacidade quanto para autenticidade . O usuário quer ter certeza de que está se comunicando com a entidade com a qual acredita estar se comunicando, e você deve estar razoavelmente seguro de que ninguém está agindo como um homem ativo no meio e modificando as comunicações e substituindo a chave pública com seus próprios. Mas mesmo enviar a chave pública em e-mail simples e não seguro não é tão ruim. Afinal, a chave pública é para ser pública.

Se você configurar novas contas apenas raramente e para as pessoas com quem tem um relacionamento estabelecido, você pode até ligar para o usuário no telefone e pedir que ele leia a impressão digital da chave SSH e verifique o que recebeu. Dê a eles a impressão digital para a (s) chave (s) do host ao mesmo tempo. Dessa forma, eles também podem ter certeza de que estão se conectando ao host correto da primeira vez. (O Hetzner inclui as impressões digitais da chave do host no e-mail "o seu VPS está pronto").

    
por 03.07.2017 / 22:48
0

Faça do jeito da Amazon - gere um par de chaves público / privado para eles, e envie a eles a chave privada. Eles precisarão enviar essa chave privada para autenticar ( ssh -i /path/to/key.pem user@host ) e, assim, você nunca precisará ativar a autenticação de senha SSH.

EDITAR: Graças aos comentaristas, finalmente vejo de onde eles vêm. Para inicialmente compartilhar a chave privada com o usuário, ela deve ser enviada por um canal seguro, como HTTPS.

    
por 03.07.2017 / 18:34