Como crio um usuário SFTP na minha instância do Lightsail?
Quero criar um usuário SFTP na minha instância do Amazon Lightsail. Como posso fazer isso?
Resolução
Observação: as etapas a seguir criam um usuário SFTP que tem acesso ao ambiente chroot (chroot jail) sem acesso SSH. O usuário SFTP não pode acessar os diretórios fora do ambiente ou diretório chroot. Assim, o diretório chroot se torna o diretório raiz do usuário.
1. Crie um grupo para os usuários do SFTP. O grupo ajuda a gerenciar muitos usuários SFTP diferentes. Neste exemplo, o nome do grupo é sftp_group. Você pode alterar o nome para um nome de grupo de sua escolha.
sudo groupadd sftp_group
2. Crie um usuário na instância com um diretório inicial. Este usuário executa apenas tarefas SFTP e não tem um shell de login SSH. No exemplo a seguir, substitua sftp_user por um nome de usuário de sua escolha.
sudo useradd -g sftp_group -m -d /home/sftp_user -s /sbin/nologin sftp_user
3. O usuário pode se autenticar de maneiras diferentes ao se conectar ao servidor por meio do SFTP. O exemplo a seguir usa uma senha e autenticação baseada em chave SSH.
Autenticação por senha
Para exigir autenticação por senha, crie uma senha usando o seguinte comando:
sudo passwd sftp_user
Autenticação baseada em chave SSH
Se você estiver usando a autenticação baseada em chave SSH, será necessário criar os arquivos SSH para o usuário e, em seguida, adicionar a chave pública aos arquivos. Para fazer isso:
No diretório inicial do usuário, crie uma pasta .ssh e um arquivo authorized_keys:
sudo mkdir /home/sftp_user/.ssh sudo touch /home/sftp_user/.ssh/authorized_keys
Adicione a chave pública SSH que você deseja usar ao arquivo /home/sftp_user/.ssh/authorized_keys. Para obter mais informações, consulte Configurar o SSH para instâncias do Lightsail baseadas em Linux/Unix.
Execute os seguintes comandos para alterar a propriedade e as permissões do diretório inicial do usuário:
sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -R sudo 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
O exemplo anterior usa a permissão 755 no diretório /home/sftp_user e altera a propriedade para o usuário root. Isso ocorre porque o diretório será usado como um diretório chroot. Lembre-se de que todos os componentes do nome do caminho devem ser diretórios de propriedade da raiz que não podem ser gravados por nenhum outro usuário ou grupo.
4. Edite o arquivo /etc/ssh/sshd_config fazendo o seguinte:
Modifique a linha sftp do Subsistema comentando na linha Subsystem sftp /usr/libexec/openssh/sftp-server:
# Subsystem sftp /usr/libexec/openssh/sftp-server
Substitua a linha anterior por:
Subsystem sftp internal-sftp
Adicione diretrizes para limitar o acesso dos usuários do SFTP. Essas diretrizes devem ser adicionadas na parte inferior do arquivo:
Match Group sftp_group ChrootDirectory /home/%u ForceCommand internal-sftp
No exemplo anterior, a diretriz ChrootDirectory é usada para especificar o diretório raiz para os usuários SFTP (chroot jail). Faça correspondência em bloco do usuário pertencente ao sftp_group que usa o caminho /home/ %u como diretório raiz. Os caracteres %u representam o usuário. Você pode alterar o diretório raiz do usuário.
A diretriz ForceCommand internal-sftp força o uso de um servidor SFTP em processo.
Se você usar a autenticação por senha, procure a diretriz PasswordAuthentication no arquivo /etc/ssh/sshd_config e verifique se ela está definida como yes.
5. Crie os diretórios chroot a serem usados pelo usuário. Substitua o nome do diretório sftp_user e carregue com seus nomes preferenciais.
sudo mkdir /home/sftp_user/uploads
Modifique a propriedade dos arquivos:
sudo chown sftp_user:sftp_group /home/sftp_user/uploads
6. Verifique se as permissões de diretório estão conforme mostrado no exemplo a seguir:
ls -ld /home drwxr-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/
7. Reinicie o serviço sshd:
sudo systemctl restart sshd
8. Conecte-se à instância com o sftp:
Autenticação por senha
# sftp sftp_user@example.com sftp_user@example.com's password:
Autenticação baseada em chave SSH
# sftp -i key.pem sftp_user@example.com

Conteúdo relevante
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos