Quais são as regras para usuários de SFTP?

1

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

    
por Supergibbs 25.08.2018 / 17:06

2 respostas

1

Adicione ao seu arquivo sshd_config seguindo a diretiva e reinicie o ssh :

AuthorizedKeysFile /home/ftpusers/files/%u/.ssh/authorized_keys .ssh/authorized_keys

Isso dirá ao daemon ssh onde procurar por chaves públicas.

Pessoalmente eu não uso authorized_keys por muito tempo, mas usando em vez disso AuthorizedKeysCommand onde eu chamo meu programa que procura na chave do usuário do banco de dados sqlite e os manda de volta para autenticação. Dessa forma, eu evito que usuários / hackers usem suas próprias chaves e essa configuração não revela o local onde as chaves públicas estão localizadas.

    
por 25.08.2018 / 21:17
0

É realmente

echo "ssh-rsa user key" > /home/ftpusers/files/username/.ssh/authorized_keys

authorized_keys contém a chave pública das pessoas com permissão para efetuar login como esse ID do usuário, portanto, é diferente para cada usuário criado. Em teoria, os usuários geram seu próprio par de chaves pública / privada e fornecem a chave pública. Você pode, é claro, gerar o par sozinho e dar a ele a parte privada, mas se algo de ruim acontecer, eles podem alegar que foi feito por outra pessoa usando sua chave privada.

    
por 25.08.2018 / 19:19

Tags