Adiciona usuário ssh com direitos mínimos para backup [duplicado]

5

Eu tenho um pequeno servidor rodando Debian e eu quero adicionar uma conta com acesso SSH para backups. O usuário dessa conta não deve ter acesso ao console. Ele só pode transferir dados (backup) via SCP para / de um diretório no servidor, nada mais. Como posso fazer isso?

editar

Eu encontrei uma solução. link contém um diferente pergunta, mas a solução resolve exatamente o meu problema.

    
por user4811 02.01.2014 / 14:11

2 respostas

3

Você pode especificar qual comando é usado no arquivo de chaves autorizado no servidor (isso substitui o comando que o usuário fornece). De acordo com man sshd (seção AUTHORIZED_KEYS FILE FORMAT):

 command="command"
         Specifies that the command is executed whenever this key is used
         for authentication.  The command supplied by the user (if any)
         is ignored.  The command is run on a pty if the client requests
         a pty; otherwise it is run without a tty.  If an 8-bit clean
         channel is required, one must not request a pty or should spec‐
         ify no-pty.  A quote may be included in the command by quoting
         it with a backslash.  This option might be useful to restrict
         certain public keys to perform just a specific operation.  An
         example might be a key that permits remote backups but nothing
         else.  Note that the client may specify TCP and/or X11 forward‐
         ing unless they are explicitly prohibited.  The command origi‐
         nally supplied by the client is available in the
         SSH_ORIGINAL_COMMAND environment variable.  Note that this
         option applies to shell, command or subsystem execution.  Also
         note that this command may be superseded by either a
         sshd_config(5) ForceCommand directive or a command embedded in a
         certificate.

Coloque no arquivo authorized_keys :

command="scp -t -- /var/tmp" ssh-rsa ......

Isso força um comando scp some_file user@server:/some/directory no cliente para crie /var/tmp/some_file no servidor.

Verifique se o usuário não pode sobrescrever ~/.ssh/authorized_keys no servidor!

Você pode fazer mais restrições, permitindo apenas de um determinado cliente. Eu uso:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp...
    
por 02.01.2014 / 14:41
1

Configure um sftp-chroot para esse usuário.

Eu encontrei a maneira mais fácil de fazer (CentOS):

  • clonando o script ssh-init
  • Use um arquivo de configuração especial para essa instância sshd

Na configuração, use as seguintes configurações:

PermitRootLogin no
PasswordAuthentication no
GSSAPIAuthentication no
AllowTcpForwarding no
PrintMotd no
PrintLastLog no
PidFile /var/run/sshd_sftp.pid
ChrootDirectory /opt/%u/chroot
Subsystem sftp internal-sftp
AllowGroups sftp

Agora crie / opt / USERNAME / chroot / home / USERNAME e quaisquer outros diretórios abaixo do chroot ao qual você deseja que o usuário tenha acesso.

Coloque a chave pública do usuário em /home/USERNAME/.ssh/authorized_keys .

Aloque o grupo sftp como grupo primário ou secundário para esse usuário.

Feito.

    
por 02.01.2014 / 17:04