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