O motivo pelo qual isso não funcionou foi porque o diretório chrooted tinha permissões de gravação. Ao revogar todas as permissões de gravação, consegui me conectar.
chmod 555 /var/www
Estou tentando fazer um usuário kake_sftp que possa efetuar login no servidor da web localizado em / var / www / html ou similar. Eu sei que o chroot precisa de alguns subdiretórios adicionais para as permissões funcionarem, então estou bem em adicionar novas pastas ou alterar um pouco o layout da pasta.
Eu criei o usuário no grupo www-data e com o diretório home em / var / www / html
$ cat /etc/passwd | grep kake_sftp
kake_sftp:x:1001:1001::/var/www/html:/bin/bash
$ groups kake_sftp
kake_sftp : kake_sftp www-data
Depois fiz algumas alterações em / etc / ssh / sshd_config. Eu substituí "subsistema sftp / usr / lib / openssh / sftp-server" com "subsistema sftp interno-sftp" e eu adicionei as seguintes linhas no final
Match User kake_sftp
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTcpForwarding no
As permissões da pasta www são definidas da seguinte forma.
$ ls -la /var/www
drwxrwxr-x 3 root root 4096 Apr 7 12:17 .
drwxr-xr-x 12 root root 4096 Apr 4 10:17 ..
drwxr-xr-x 2 root www-data 4096 Apr 4 11:34 html
Quando eu agora tento fazer o login com o Filezilla configurado para sftp. Eu recebo o seguinte erro.
Error: Network error: Software caused connection abort
Error: Could not connect to server
Quando tento fazer o login com o meu usuário principal via sftp, funciona como um encanto. Então não há problema com o cliente.
O motivo pelo qual isso não funcionou foi porque o diretório chrooted tinha permissões de gravação. Ao revogar todas as permissões de gravação, consegui me conectar.
chmod 555 /var/www