Como crio um usuário SFTP na minha instância do Lightsail?

3 minuto de leitura
0

Quero criar um usuário do SFTP na minha instância do Amazon Lightsail.

Resolução

Observação: as etapas a seguir criam um usuário do SFTP com acesso a um ambiente chroot (chroot jail) sem acesso SSH. O usuário do SFTP não pode acessar os diretórios fora do ambiente ou diretório chroot. Para esse usuário, o diretório chroot é o diretório raiz.

Configurar seu grupo e usuário do SFTP

  1. Crie um grupo para os usuários do SFTP com o seguinte comando:

    sudo groupadd sftp_group

    Observação: substitua sftp_group pelo nome do seu grupo.

  2. Crie um usuário na instância com um diretório inicial sem acesso ao shell de login do SSH. Para fazer isso, execute o comando a seguir:

    sudo useradd -g sftp_group -m -d  /home/sftp_user -s /sbin/nologin sftp_user

    Observação: substitua sftp_user pelo seu nome de usuário.

Configure a autenticação do usuário com autenticação por senha ou autenticação baseada em chave SSH

Autenticação de senha

Use o seguinte comando para criar uma senha:

sudo passwd sftp_user

Autenticação baseada em chave SSH

  1. Para exigir autenticação baseada em chave SSH, crie uma pasta .ssh no diretório inicial do usuário. Em seguida, crie um arquivo authorized_keys:

    sudo mkdir /home/sftp_user/.ssh
    sudo touch /home/sftp_user/.ssh/authorized_keys
  2. Adicione a chave pública SSH que você deseja usar ao arquivo /home/sftp_user/.ssh/authorized_keys. Para obter mais informações, consulte Set up SSH keys for Lightsail.

  3. Para alterar a propriedade e as permissões do diretório inicial do usuário, execute os seguintes comandos:

    sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -Rsudo chown root:sftp_group /home/sftp_user/
    sudo chmod 755 /home/sftp_user/
    sudo chmod 700 /home/sftp_user/.ssh/
    sudo chmod 600 /home/sftp_user/.ssh/authorized_keys

    Observação: o exemplo anterior usa a permissão 755 no diretório /home/sftp_user e, em seguida, altera a propriedade para o usuário-raiz. Esse diretório de usuário é usado como um diretório chroot.

Edite o arquivo /etc/ssh/sshd_config

  1. Na linha Subsystem sftp, comente a linha Subsystem sftp /usr/libexec/openssh/sftp-server:

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. Substitua a linha anterior pelo texto a seguir:

    Subsystem sftp internal-sftp
  3. Para limitar o acesso do usuário do SFTP, adicione o seguinte texto no final do arquivo:

    Match Group sftp_group
    ChrootDirectory /home/%u
    ForceCommand internal-sftp

    No exemplo anterior, o ChrootDirectory especifica o diretório raiz para os usuários do SFTP. MatchGroup identifica os usuários no sftp_group que usam o caminho /home/%u como diretório raiz. Os caracteres %u representam o usuário. ForceCommand internal-sftp força o uso de um servidor SFTP em processo.

  4. Se você usar a autenticação por senha, defina PasswordAuthentication no arquivo /etc/ssh/sshd_config como yes.

Criar os diretórios chroot para o usuário

  1. Para criar um diretório chroot, execute o seguinte:
    sudo mkdir /home/sftp_user/uploads
    Observação: substitua o nome do diretório, sftp_user e uploads pelo nome do seu diretório.
  2. Modificar a propriedade dos arquivos:
    sudo chown sftp_user:sftp_group /home/sftp_user/uploads
    Observação: substitua o nome do diretório, sftp_user e uploads pelo nome do seu diretório.

Verifique suas alterações e reinicie o serviço SSHD

  1. Verifique se as permissões do diretório são semelhantes ao exemplo a seguir:

    ls -ld /homedrwxr-xr-x 3 root root 23 Oct  6 15:17 /home
    
    ls -ld /home/sftp_user
    drwxr-xr-x 3 root sftp_group 21 Oct  6 15:17 /home/sftp_user
    
    ls -ld /home/sftp_user/uploads/
    drwxr-xr-x 2 sftp_user sftp_group 6 Oct  6 15:17 /home/sftp_user/uploads/
  2. Reinicie o serviço SSHD:

    sudo systemctl restart sshd

Conectar-se à instância com o SFTP

Autenticação de senha

Execute o seguinte:

# sftp sftp_user@example.com's password:

Autenticação baseada em chave SSH

Execute o seguinte:

# sftp -i key.pem sftp_user@example.com
AWS OFICIAL
AWS OFICIALAtualizada há um ano