ssh comando forçado: sftp / scp apenas

1

Objetivo: acesso somente ao sftp / scp, sem a necessidade de usuários do Linux.

Eu quero fornecer 10 diretórios sftp / scp para 10 pessoas. Vamos chamar isso de "conta virtual"

Eu não quero criar usuários Linux para cada um deles.

Eu gostaria de criar um usuário linux (backup_user). Em seu diretório home, haverá 10 diretórios. Para cada "conta virtual", um diretório.

Toda conta virtual deve ver apenas seus próprios arquivos, não os arquivos de outra conta virtual.

Eu gostaria de usar a solução que é fornecida aqui: link

Em suma, haverá 10 linhas no arquivo authorized_keys:

~backup_user/.ssh/authorized_keys:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=\
    "scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...

Eu poderia melhorar isso por um script python e não usar o código-fonte "scp -v ...".

Eu gostaria de apoiar scp e sftp.

Existe uma maneira de chroot, para garantir que cada conta virtual não possa sair de sua cadeia?

BTW: A idéia com authorized_keys e "comando forçado" é apenas minha estratégia atual. Se há uma maneira melhor para cada objetivo geral, então por favor me diga: -)

Estamos executando um servidor OpenSSH. Eu gostaria de cumpri-lo, se possível.

Atualizar

Encontramos uma solução diferente: http. Nós desenvolvemos um arquivo pequeno e genérico http uploader: link O feedback é bem-vindo

    
por guettli 31.08.2017 / 17:35

4 respostas

3

Isso deve ser um comentário, mas é um pouco longo.

Você não descreveu adequadamente seu objetivo. Embora eu possa fazer algumas inferências, extrapolar isso para uma proposta seria fútil.

Embora existam ferramentas disponíveis que permitem criar um servidor independente dos usuários subjacentes, elas são complicadas de configurar e restritas em sua capacidade de integração com outras funções.

Seria muito mais simples configurar 10 usuários com logins baseados em keypair e sem acesso ao shell. Mas sua única restrição claramente declarada é que "não quer criar usuários linux para cada um deles" - mas você não explica por quê. OTOH você afirma que deseja usar um método baseado no provisionamento de usuários no sistema operacional.

    
por 01.09.2017 / 12:12
3

Eu acho que o que você quer (acesso sem criar usuário local) não é possível com o sshd.

Em vez disso, você pode usar o proftpd com usuários virtuais (de, por exemplo, um banco de dados MySQL) + o módulo SFTP / SCP.

    
por 11.09.2017 / 07:42
1

O que você quer fazer é mais do que um pouco complicado. Se você não quiser usar uma ferramenta self-chroot-shoot-em-foot-foot, você tem que se ater ao ssh chroot embutido, que por sua vez é restrito ao diretório home do usuário (% h) = ou qualquer outra coisa que você pode especificar em sshd_config. Pelo menos eu não encontrei uma maneira de definir o diretório chroot no arquivo authorized_keys, o que resolveria esse problema.

Então tudo depende do que você quer dizer com "Eu não quero criar usuários Linux para cada um deles". Se você simplesmente não quer uma entrada / etc / passwd, você pode ser uma das maneiras pelas quais o PAM é capaz de autenticar usuários "virtuais" para você. Você pode usar um banco de dados (um exagero para 10 usuários, é claro), usar um arquivo tipo passwd adicional, berkley db files, por exemplo. Esses usuários virtuais podem estar restritos ao serviço sftp ou o que você quiser. Se seus diretórios pessoais virtuais estiverem configurados para os subdiretórios pretendidos do usuário backup_user, talvez seja isso que você deseja. Bem, quase. Se você especificar um comando em authorized_keys, o sftp pedirá a senha - acho que você não quer isso.

Se cada um dos seus 10 usuários usar 2 chaves ssh, uma para scp e outra para sftp, isso funcionará. Você tem que imitar o comportamento do comportamento do scp remoto, porém, especificando um script no arquivo authorized_keys, que lê a variável de ambiente SSH_ORIGINAL_COMMAND. Um pouco complicado de qualquer maneira.

    
por 01.09.2017 / 10:42
1

ssh não suporta usuários virais. isso pode ser implementado através do PAM, mas precisa escrever código.

se você pode adicionar usuários locais, você pode tentar esta ferramenta

link

Codifica um usuário para um diretório específico.

    
por 19.09.2017 / 09:49

Tags