Existe uma maneira mais fácil de adicionar autenticação de chave pública para novos usuários?

5

Estou no processo árduo e doloroso de configurar usuários seguros em um novo servidor LEMP da web com o Ubuntu 12.04. Eu estava inicialmente indo para configurar algo como vsftpd ou proftpd, mas muitos sugeriram apenas para usar SFTP diretamente assim que eu vou. Por fim, tenho um usuário principal (que uso simplesmente para impedir logins de raiz). Eu criei este novo usuário, gerou um par de chaves públicas, carreguei a chave pública no diretório ~/.ssh dos usuários como authorized_key , alterei o número da porta SSH, removi o login root e também defini passwordauthentication como NÃO, para que o usuário seja forçado a usar a chave dele / dela para entrar. Fácil bastante (entretanto trabalhar em um PC parece ser muito mais de uma dor de cabeça para isto que minhas contrapartes de OSX / NIX).

Agora estou tentando criar novos usuários (para meus desenvolvedores da Web) que simplesmente terão acesso ao SFTP e limitarão sua exposição simplesmente ao diretório da Web de sua cobrança. Cada diretório tem o seguinte formato:

/var/www/sitename.com/public/

Minha dor de cabeça começa agora. Crie um novo usuário? Fácil. Adicionar senha? Realmente não preciso que eu esteja exigindo chaves públicas / privadas (e elas nunca terão acesso ao sudo), mas ok. Eu estou lutando no entanto com o seguinte:

  • Como eu realmente armazeno esta chave pública do novo usuário no servidor? Se eu fizer login como usuário root e simplesmente criar o arquivo authorized_keys em seu diretório inicial, ele terá permissões de proprietário e grupo de raiz e não conseguirá efetuar login no servidor. De maneira semelhante, esses novos usuários não podem fazer login e criá-lo por conta própria, bem, porque não têm permissão para fazer o login por senha.

(nota: Eu também estou lutando para configurar o sftp e limitá-los aos seus respectivos diretórios da web, mas eu acho que posso descobrir isso mais tarde).

Algum conselho?

Editar

Atualmente, o processo é este:

  • obtenha chave pública do indivíduo
  • siga os seguintes comandos:
#sudo mkdir -p /home/newuser/.ssh
#sudo nano /home/newuser/.ssh/authorized_key
#(copy key into single line and save)
#chown -R newuser:newuser /home/newuser
#chmod 700 /home/newuser/.ssh
#chmod 600 /home/newuser/.ssh/authorized_key

Suponho que isso não seja absolutamente horrível, mas se tivermos um grande número de desenvolvedores (mais a quantidade de tempo que está prestes a levar para configurá-los com a parte do SFTP e o limite de diretórios), parece um enorme dor.

    
por JM4 07.03.2013 / 01:50

3 respostas

10

Você precisa alterar a propriedade do arquivo e definir as permissões adequadamente.

$ chown -R newuser /path/to/home/.ssh
$ chmod 700 /path/to/home/.ssh
$ chmod 600 /path/to/home/.ssh/authorized_keys

Para tornar esse processo mais simples, repetitivo e auditável, use um sistema de gerenciamento de configuração para gerenciamento de usuários. Todos os sistemas de gerenciamento de configuração amplamente utilizados (fantoche, chef, ansible etc.) são fornecidos com a capacidade de criar usuários e implantar chaves. Um enorme benefício adicional de usar um sistema de gerenciamento de configuração é que você também pode manter sua configuração no controle de origem.

    
por 07.03.2013 / 02:01
1

How do I actually store THIS new user's public key on the server? If I login as my root user and simply create the authorized_keys file within their home directory, it will have root owner and group permissions and they are unable to log in to the server.

Crie-o para eles usando a chave pública que eles fornecem a você quando solicitam a conta. Chove-o apropriadamente. Chmod apropriadamente. Feito.

    
por 07.03.2013 / 02:02
0
/home/newuser/.ssh/authorized_key

Cuidado com esse erro de digitação :)

é 'authorized_keys'. Isso me frustrou por pelo menos meia hora.

    
por 07.12.2017 / 15:07