Eu tenho um servidor FTP que autentica por meio de uma API e tem pastas de usuários em:
/home/ftpusers/files/<username>
Alguns usuários solicitaram SFTP e, como já tenho processos para colocar arquivos no diretório do usuário, acho que posso criar contas para os usuários.
useradd -g sftpgroup -d /home/ftpusers/files/username/ -s /sbin/nologin username
mkdir -p /home/ftpusers/files/username/.ssh
chown -R username:ftpgroup /home/ftpusers/files/username
chmod -R 770 /home/ftpusers/files/username
echo "ssh-rsa user key" > /home/ftpusers/files/username/.ssh/authorized_keys
chown username:sftpgroup /home/ftpusers/files/username/.ssh
chmod 700 /home/ftpusers/files/username/.ssh
chown username:sftpgroup /home/ftpusers/files/username/.ssh/authorized_keys
chmod 600 /home/ftpusers/files/username/.ssh/authorized_keys
o ftpgroup é assim que uma conta do sistema pode colocar arquivos na pasta do usuário
o sftpgroup é para bloquear este usuário apenas para SFTP usando:
Match Group sftpgroup
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
Infelizmente isso não funciona. Nenhum erro útil, apenas:
Permission denied (publickey)
Funciona bem se eu criar um usuário de uma maneira mais padrão no diretório / home /
Alguma idéia sobre o porquê? Eu sei que o chroot tem muitas restrições de permissão. Isso é algo assim?
Adicionado saída namei:
Claro:
namei -l /home/ftpusers/files/jmandel/.ssh
f: /home/ftpusers/files/jmandel/.ssh
dr-xr-xr-x root root /
drwxr-xr-x root root home
drwxrwx--- ftpuser ftpgroup ftpusers
drwxrwx--- ftpuser ftpgroup files
drwxrwx--- jmandel ftpgroup jmandel
drwx------ jmandel sftpgroup .ssh
Marked answer below has good information in comment thread