Como configurar um servidor SFTP com usuários chrooted em seus diretórios home? [duplicado]

20

Eu tenho tentado configurar um servidor SFTP com vários usuários chrooting em seus diretórios base. Eu segui o conselho em este guia ( Archive.org link ) e, em seguida, executou os seguintes comandos nos diretórios do usuário

chown root:root /home/user/
chmod 755 /home/user/

Existe uma pasta adicional no diretório inicial de cada usuário chamada public , que pertence ao usuário, para permitir que eles criem diretórios e carreguem e removam arquivos conforme necessário. (Isso foi recomendado no guia que mencionei anteriormente)

Agora, quando executo sftp -P 435 user@localhost , recebo este erro:

  

Falha de gravação: cano quebrado
  Não foi possível ler o pacote: Conexão redefinida pelo peer

Como eu procedo daqui? A idéia final é fazer com que cada usuário em outra máquina utilize o FileZilla para acessar seus diretórios home chrooted e depois fazer o upload de diretórios e arquivos. Tudo isso no SFTP (porque é mais seguro)

    
por Nitin Venkatesh 17.06.2011 / 17:10
fonte

5 respostas

24

Esse artigo também descreve como obter um acesso ao shell chrooted, mas como você quer apenas uma conta somente do sftp, siga estas instruções:

Edite /etc/ssh/sshd_config e adicione as linhas:

SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

Encontre a linha UsePAM yes e comente:

#UsePAM yes

Sem desabilitar isso, meu servidor SSH falharia ao recarregar / reiniciar. Como não preciso de funções sofisticadas do PAM, tudo bem.

Para segurança extra, restrinja os usuários que podem fazer login. Se você esquecer de adicionar usuários do SFTP ao grupo sftp , conceda a eles acesso gratuito ao shell. Não é um cenário legal. Como o SSH não pode combinar AllowUsers e AllowGroups (um login precisa cumprir ambas as regras), você precisa criar um grupo adicional, digamos ssh-users . Adicione os usuários com permissão para efetuar login ( youruser abaixo) sobre SSH:

sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users

Adicione a próxima linha a /etc/ssh/sshd_config :

AllowGroups ssh-users sftp

Continue com a modificação das permissões do diretório pessoal dos usuários para permitir o uso de chrooting (exemplo user sftp-user ):

sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user

Crie um diretório no qual sftp-user esteja livre para colocar qualquer arquivo:

sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public

Se você tiver problemas, verifique /var/log/syslog e /var/log/auth.log para obter detalhes. Execute ssh ou sftp com a opção -vvv para mensagens de depuração. Para sftp , a opção deve aparecer antes do host, como em sftp -vvv user@host .

    
por Lekensteyn 17.06.2011 / 18:36
fonte
8

Estou usando o Ubuntu LTS 12.04 e depois de muita dor, isso funcionou para mim.

Minhas configurações para /etc/ssh/sshd_config

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  1. crie o grupo sftp:

    groupadd sftp

  2. Crie um usuário diretamente com o novo grupo sftp anexado:

    sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false

  3. definir permissões para uso com o ssh para sftp:

    chown root:root HomeFolder

    chmod 755 HomeFolder

  4. reiniciar o serviço:

    service ssh restart

Note que a pasta pessoal do novo usuário do sftp deve receber o dono da raiz.

    
por Aten 16.10.2012 / 15:41
fonte
7

Só queria adicionar que as permissões de pasta na árvore de diretórios precisam ser definidas de uma determinada maneira.

  Os requisitos estritos de propriedade / permissões do sshd ditam que todos   diretório no caminho chroot deve ser de propriedade de root e apenas gravável   pelo proprietário.

Origem

Eu estava tendo um erro muito semelhante, e corrigir minhas permissões de diretório corrigiu o problema para mim.

    
por Nathan Jones 30.09.2015 / 22:08
fonte
3

Este é um guia passo a passo para permitir:

  1. Acesso SFTP a / home / bob / uploads para o usuário bob
  2. Bloqueio do SSH
  3. Use nome de usuário / senhas em vez de chaves:

Primeiro, edite seu arquivo / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Desloque-se para baixo e modifique:

PasswordAuthentication yes

e adicione isso na parte inferior:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Pressione Ctrl-X para sair e salvar.

Agora adicione o usuário:

sudo useradd bob
sudo passwd bob

Agora adicione os grupos e desative ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Agora defina as permissões:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Tudo isso enquanto estiver logado como usuário root (usuário ec2 em AMIs do Amazon Linux)

    
por Rob Mulder 26.07.2016 / 03:28
fonte
0

Observe também que ao adicionar a diretiva Match ao arquivo de configuração, qualquer diretiva que não seja relevante para o que você está correspondendo pode parar de funcionar. Em vez de comentar tudo o que não é compatível, basta mover qualquer seção que inclua uma diretiva Match para o final do arquivo de configuração.

Além disso, as permissões provavelmente precisam ser configuradas para 755 no diretório chroot e em qualquer diretório pai, e o proprietário para root: root. Pessoalmente, eu configurei o diretório chroot sshd_config para ser% h, o diretório pessoal do usuário, e então configurei seu diretório home para onde eu quero que ele esteja, como /var/www/examplewebsite.com. Alguns podem preferir configurar um diretório inicial chroot com uma porção estática seguida do nome de usuário, como / var / www /% u, no entanto, isso exige que a diretiva chroot de seu usuário corresponda ao seu nome de usuário, é claro.

Para solucionar problemas de conexão, interrompa o serviço ssh, certificando-se de abrir uma sessão SSH ou dois primeiros para teste e inicie o daemon interativamente no modo de depuração para examinar as informações de depuração de conexão, pois isso pode ajudar a identificar problemas e pesquise como corrigi-los.

Comandos: service ssh stop; / usr / sbin / sshd -d

Certifique-se de iniciar o ssh novamente depois de terminar! Comando: serviço ssh start

    
por RedScourge 28.01.2016 / 03:09
fonte