Como criar um servidor SFTP em uma instância EC2 na AWS

No Servidor

É importante saber que não é necessário utilizar o serviço vsftpd para criar um serviço SFTP. Por outro lado é importante manter o serviço sshd sempre ativo:

$ sudo systemctl enable sshd


Crie uma instância EC2 Amazon Linux no console da AWS.

https://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html


Conecte-se na instância EC2:

$ ssh -i "minha-chave.pem" ec2-user@DNS-IPv4-público


Crie um grupo para o SFTP:

$ sudo groupadd sftpgroup


Crie restrições de acesso para o grupo editando o arquivo /etc/ssh/sshd_config e adicionando as seguintes informações no final do arquivo:

$ sudo nano /etc/ssh/sshd_config


# sftpgroup rules

Match Group sftpgroup

   # Allow password authentication

   PasswordAuthentication yes

   # Allow internal connection to SFTP

   ForceCommand internal-sftp -l INFO

   # Restrict user access to their directory

   ChrootDirectory %h

   # Deny VPN connections via SSH

   PermitTunnel no

   # Deny ssh-agent forwarding

   AllowAgentForwarding no

   # Deny TCP forwarding

   AllowTcpForwarding no

   # Deny X11 forwarding

   X11Forwarding no

   # Deny pty allocation

   PermitTTY no


No mesmo arquivo /etc/ssh/sshd_config comente as linhas:

# AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f

# AuthorizedKeysCommandUser ec2-instance-connect


Reinicie o serviço sshd:

$ sudo service sshd restart


Crie os diretórios do usuário de modo a fornecer permissão de gravação somente no sub-diretório upload e impedindo gravação nos demais diretórios da home deste usuário:

$ sudo useradd -g sftpgroup teco -s /sbin/nologin

$ sudo passwd teco

$ sudo mkdir -p /home/teco/.ssh

$ sudo mkdir -p /home/teco/upload

$ sudo chmod 755 -R /home/teco

$ sudo chmod 700 -R /home/teco/.ssh


Insira as chaves de autorização dentro do arquivo authorized_keys (uma chave por linha):

$ sudo touch /home/teco/.ssh/authorized_keys

$ sudo chmod 600 /home/teco/.ssh/authorized_keys


Redefina a propriedade dos diretórios e arquivos do /home/teco:

$ sudo chown teco:sftpgroup /home/teco -R


Teste de dentro do próprio servidor:

$ sftp teco@localhost


Na sua máquina local

Acessando o SFTP a partir da sua máquina local digitando a senha:

$ sftp teco@DNS-IPv4-público


Acessando o SFTP a partir da sua máquina local sem digitar a senha (utilizando sua chave pública):

$ mkdir -p ~/.ssh

$ cd ~/.ssh

$ ssh-keygen -o

$ ssh-copy-id -i ~/.ssh/id_rsa.pub teco@DNS-IPv4-público

$ sftp teco@DNS-IPv4-público


NOTA: lembre-se de permitir acesso externo na AWS configurando as portas de entrada com o EC2 security group ( https://help.thorntech.com/docs/sftp-gateway-classic/configure-an-ec2-security-group/ )

Comentários

Postagens mais visitadas deste blog

Configurar teclado americano com acentuação em português + Ç no Ubuntu 18.04LTS e 20.04LTS

Como instalar a impressora Epson L395 via wi-fi no Ubuntu 18.04 LTS e Ubuntu 20.04 LTS