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

Data da última atualização: 14-10-2021

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

Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?