Como posso criar um usuário apenas para sftp?

15

Eu adicionei um usuário ao sistema através da adduserferramenta. Então, /etc/passwdtentei mudar de /bin/bashpara /sbin/nologinou para /dev/null, mas nenhum deles funcionou.

Eu gostaria que o usuário não tivesse a opção de obter um shell interativo e apenas de usá-lo sftp. Há algum jeito?

Eu sei que já foi perguntado aqui antes, mas parece que ninguém deu uma resposta satisfatória.

Toni Rosa
fonte
O que você quer dizer com "sem sorte"?
Paweł Brodacki
Eu quis dizer que o scp / sftp remoto não funcionou. Eu resolvi-lo usando o shell scponly como sugerido por Iain
Toni Rosa

Respostas:

9

O comando que você deve usar para alterar o shell é chsh . O shell nologin pode ser /sbin/nologinou /usr/sbin/nologin(verifique o que você tem olhando /etc/shells), mas /bin/falseprovavelmente seria uma escolha melhor.

chsh -s /bin/false user

Você deve configurar algo como scponly, que fará exatamente o que você deseja.

Iain
fonte
Obrigado pela sua resposta. Eu tentei com os shells dentro do / etc / shell sem sorte ... / bin / false fornece uma "conexão perdida" e / sbin / nologin retorna um "Esta conta não está disponível no momento". Vou tentar isso scponly
Toni Rosa
Eu resolvi usando a concha de borracha! Cheers
Toni Rosa
3
Esta resposta é a agulha no feno! Certifique-se /bin/falsee /bin/nologinestão realmente disponíveis no /etc/shells!
Afr
@ Afri Fine, mas ... você realmente vai querer ler serverfault.com/questions/328395/… . Isso é fortemente contra-indicado.
Reinderien
@Afr não colocar nologinem /etc/shells! serverfault.com/a/328424
Robau
9

Você também deve conseguir fazê-lo com o OpenSSH 4.9 e superior, com o qual também pode fazer o chroot do usuário para aumentar a segurança.

No seu /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Então corra:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

O usuário poderá escrever apenas em / home / user / uploads.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory

Eduardo Ivanec
fonte
+1 Coloquei isso na minha lista para investigar.
User9517 12/12
1
Eu o usei e funciona muito bem - você também pode dar ao usuário a opção de efetuar login no ambiente chroot com um shell, mas nesse caso você deve copiar um mínimo de bibliotecas e alguns outros utilitários conforme o esperado. O Jailkit ( olivier.sessink.nl/jailkit ) é útil para isso.
Eduardo Ivanec
Obrigado, ForceCommand foi uma dica. Não preciso de chroot, mas quero fazer login no SFTP com contas de serviço.
AnrDaemon #
2

Eu acho que a melhor maneira é com mysecureshell

http://mysecureshell.sourceforge.net/en/index.html

Você pode fazer o chroot de um usuário com isso com facilidade e até limitar a largura de banda, se necessário.

Mike
fonte
Eu resolvi-lo usando o shell scponly, mas é interessant a conhecer esta mysecureshell
Toni Rosa
1

Você pode adicionar um usuário -s /bin/falsepara desativar seu shell, mas o que você realmente deve considerar na configuração é uma conta sftp com chroot. Isso "prende" um usuário em seu próprio diretório e impede que ele possa acessar ou modificar qualquer arquivo ou diretório fora do diretório chroot.

gravyface
fonte
Obrigado pela sua resposta, mas parece não funcionar. Eu recebo uma "conexão perdida" sempre que tento um usuário usando o shell / bin / false.
Toni Rosa