Se você quiser configurar todas as coisas limitantes mencionadas, sugiro usar o ProFTPd.
Usando o sftp_module , você só pode permitir uma sessão segura. Consulte o link para obter detalhes sobre a funcionalidade sftp . Perto da parte inferior da página, está listada uma configuração de exemplo.
Usando a diretiva DefaultRoot , você pode isolar o usuário concedido em seu próprio diretório
Usando a estrutura <LIMIT> , você pode limitar os comandos FTP que deseja permitir, ou seja, READ , para que o usuário não possa recuperar arquivos. Consulte o link para obter detalhes.
Quando você configurar a configuração sftp no ProFTPd, provavelmente desejará que ela escute em outra porta que não seja ssh , por exemplo 2222. Configure seu firewall e / ou roteador para permitir o tráfego vindo de stranger para o porta que você escolher para o ProFTPd. Outra possibilidade é executar o módulo sftp do ProFTPd na porta 22 e reconfigurar ssh para escutar em outra porta.
Uma configuração de amostra pode ser semelhante a:
<IfModule mod_sftp.c>
<VirtualHost a.b.c.d>
# The SFTP configuration
Port 2222
SFTPEngine on
SFTPLog /var/log/proftpd_sftp.log
# Configure the RSA, DSA, and ECDSA host keys, using the same host key
# files that OpenSSH uses.
SFTPHostKey /etc/ssh_host_rsa_key
SFTPHostKey /etc/ssh_host_dsa_key
SFTPHostKey /etc/ssh_host_ecdsa_key
<Limit READ>
DenyAll
</Limit>
DefaultRoot ~ users,!staff
</VirtualHost>
</IfModule>
Nota : Esta não é uma configuração completa do ProFTPd, você deve revisar e modificar a configuração padrão do ProFTPd para que ela atenda às suas necessidades.
Existe outra possibilidade de usar apenas o OpenSSH para isso:
Crie o usuário stranger e defina uma senha para o usuário:
useradd -m -d /home/stranger -s /bin/true stranger
passwd stranger
Edite o arquivo /etc/ssh/sshd_config e verifique se a linha a seguir existe, adicione-a se ela não existir:
Subsystem sftp internal-sftp
Em seguida, adicione um bloco de correspondência na parte inferior de /etc/ssh/sshd_config :
Match User stranger
ChrootDirectory %h
ForceCommand internal-sftp -P read,remove
AllowTcpForwarding no
Observação : o usuário poderá sobrescrever um arquivo existente.
Reinicie o daemon sshd .
Defina o proprietário do diretório /home/stranger to root :
chown root:stranger /home/stranger
Observação : root deve ser o proprietário e pode ser o único a ter permissão de gravação se o ChrootDirectory for usado. Uma alternativa pode ser adicionar -d %u à linha ForceCommand internal-sftp e definir ChrootDirectory /home , mas um usuário poderá cd / e ver outros nomes de usuários com ls
Crie um diretório de upload para o usuário:
mkdir /home/stranger/upload; chown stranger:stranger /home/stranger/upload
Agora você pode fazer logon como usuário stranger usando:
sftp stranger@somehost
Quando você envia um arquivo, ele deve estar ok:
sftp> put myfile
Uploading myfile to /upload/myfile
myfile 100% 17 0.0KB/s 00:00
sftp> get myfile
Fetching /upload/myfile to myfile
/upload/myfile 0% 0 0.0KB/s --:-- ETA
Couldn't read from remote file "/upload/myfile" : Permission denied