ssh muitos usuários para uma casa

6

Eu quero permitir que alguns usuários confiáveis transfiram arquivos para o meu servidor (para um usuário específico), mas eu não quero dar a esses usuários uma casa, nem login ssh.

Estou com problemas para entender as configurações corretas de usuários / grupos que preciso criar para que isso aconteça.

Vou colocar um exemplo;

Tendo:

  1. MyUser@MyServer
  2. MyUser pertence ao grupo MyGroup
  3. a casa do MyUser será, digamos, /home/MyUser
  4. SFTPGuy1@OtherBox1
  5. SFTPGuy2@OtherBox2

Eles me dão seus id_dsa.pub e eu adiciono ao meu authorized_keys

Eu acho, então, eu faria no meu servidor algo como

useradd -d /home/MyUser -s /bin/false SFTPGuy1 (e o mesmo para o outro ..)

E para o último, useradd -G MyGroup SFTPGuy1 (então, novamente, para o outro cara)

Eu esperaria, então, que os SFTPGuys conseguissem sftp -o IdentityFile=id_dsa MyServer e fossem levados para a casa do MyUser ...

Bem, este não é o caso ... O SFTP apenas me pede uma senha.

Alguém poderia apontar o que estou perdendo?

Obrigado um mil,

f.

[ EDIT : Messa no StackOverflow me perguntou se o arquivo authorized_keys era legível para os outros usuários (membros do MyGroup). É um ponto interessante, esta foi a minha resposta:

Bem, não foi (era 700), mas depois mudei as permissões do diretório .ssh e do arquivo auth para 750, embora ainda sem efeito. Acho que vale a pena mencionar que meu diretório home ( /home/MyUser ) também é legível para o grupo; a maioria dos dirs sendo 750 e a pasta específica onde eles soltam os arquivos é de 770.

No entanto, sobre o arquivo de autenticação, eu acredito que a autenticação seria executada pelo usuário local em MyServer , não é? Se assim for, eu não entendo a necessidade de outros usuários para lê-lo ... bem ... apenas imaginando. ]

    
por filippo 04.06.2010 / 10:31

9 respostas

4

Antes de experimentar, leia todo o caminho até o final, por favor.

Você pode fazer o que quiser, criando dois usuários, colocando-os no mesmo grupo e dando a eles o mesmo diretório base. Em seguida, crie o arquivo ~ / .ssh / authorized_keys no diretório compartilhado com as chaves.

As contas precisam ter um shell, então bloqueie-as usando usermod -L LOGIN , o que impedirá o login interativo.

As permissões no diretório ~ / .ssh precisam ser g: r-x e as teclas ~ / .ssh / authorized_keys precisam ser g: r--

chmod g+rx ~/.ssh
chmod g+r ~/.ssh/authorized_keys

Isso causa sshd pain, pois espera que o diretório seja no máximo g: r-- e o arquivo seja g: --- você recebe a mensagem de erro

Authentication refused: bad ownership or modes for file /home/test/.ssh/authorized_keys

Para fazer este esquema funcionar agora você tem que quebrar as verificações internas do sshd editando /etc/sshd_config e configuração StrictModes no do padrão StrictModes yes . Reinicie o sshd para tornar as alterações conhecidas.

Deve funcionar como quiser. Infelizmente você tirou a segurança do sshd e pode fazer alterações em datas posteriores que deixam seu sistema aberto.

Para fazer isso com mais segurança, não faça nenhuma das alterações acima

Crie duas contas de usuário no mesmo grupo e configure suas ~ / .ssh / authorised_keys Crie um link de cada diretório inicial para o local em que você deseja colocar as coisas.

ln -s -n /path/to/stuff content

Bloqueie as permissões no diretório inicial para impedir que os usuários gravem para elas.

Pare as contas de fazer login interativamente

usermod -L LOGIN

Altere as permissões no / path / to / stuff para permitir o acesso do grupo.

    
por 04.06.2010 / 17:42
1

Parece que você deseja fornecer acesso a um ID do usuário que atua como uma caixa de depósito para arquivos. Você pode restringir o que os usuários podem fazer no arquivo de chaves autorizadas.

Como você só deseja que eles se conectem a esse ID de usuário no servidor, você pode fornecer a eles um arquivo .ssh / config que os mapeia diretamente para o ID do usuário correto.

    
por 05.06.2010 / 02:30
1

A resposta a esta pergunta - Como posso criar uma conta de usuário que só permite uploads via sftp? - recomenda um pacote chamado scponly - Eu nunca usei, mas parece que pode fazer o que você quer.

    
por 05.06.2010 / 05:35
0

Você pode ter problemas com o sshd (e, portanto, o sftp) não gostar das permissões do arquivo authorized_keys.

Você pode conseguir desfazer "StrictModes" no sshd - mas não tenho certeza no momento quais são as outras implicações dessa configuração ...

Citando pergunta 3.14 na FAQ do openssh : -

Typically this is caused by the file permissions on $HOME, $HOME/.ssh or $HOME/.ssh/authorized_keys being more permissive than sshd allows by default.

In this case, it can be solved by executing the following on the server.

$ chmod go-w $HOME $HOME/.ssh $ chmod 600 $HOME/.ssh/authorized_keys $ chown whoami $HOME/.ssh/authorized_keys

If this is not possible for some reason, an alternative is to set StrictModes no in sshd_config, however this is not recommended.

Espero que ajude.

    
por 04.06.2010 / 11:23
0

inspecionar os arquivos de log pode ajudar. Por favor digite o seguinte após um login "sem sucesso"

tail -n 50 /var/log/secure

e poste a saída

    
por 04.06.2010 / 11:24
0

Poderia isso ser uma opção? Não tenho certeza se entendi perfeitamente qual é o seu problema, mas tenho certeza de que você não pode fazer SFTP se seu usuário tiver / bin / false shell.

    
por 04.06.2010 / 12:48
0

Acho que a rota mais direta é conceder a cada usuário uma conta, mas configurá-la com o shell rssh (restricted) em vez de um shell normal como bash ou ksh . É um pseudo-shell usado com o OpenSSH e foi projetado para permitir apenas operações como scp , sftp . Você pode ler a man page para uma descrição completa. Você poderia então configurar o sistema de destino, grupos e quaisquer diretórios "drop" para serem bloqueados como você gostaria (por exemplo, grupos "de uso único", chroot jail, etc.).

    
por 04.06.2010 / 21:28
0

Apenas deslizando o conteúdo, parece que uma solução seria gerar e distribuir chaves para cada contexto em particular. No host de destino, você pode limitar o que cada chave pode fazer no arquivo authorized_keys, incluindo o comando. Isso pode ser encontrado na página man do sshd_config.

O exemplo que ele fornece é: (desculpe sobre a formatação)

Um exemplo de arquivo authorized_keys:

    # Comments allowed at start of line
    ssh-rsa AAAAB3Nza...LiPk== [email protected]
    from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
    AAAAB2...19Q== [email protected]
    command="dump /home",no-pty,no-port-forwarding ssh-dss
    AAAAC3...51R== example.net
    permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss
    AAAAB5...21S==
    tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
    [email protected]
    
por 05.06.2010 / 00:38
-1

Eu não acho que haja uma maneira fácil e direta de fazer isso por causa das permissões estritas que o sshd impõe, mas funcionaria para configurá-las usando ssh chroots apontando para o mesmo lugar? Isso também impediria que eles pudessem realmente interagir com o sistema se eles tivessem ssh em vez de scp / sftp.

    
por 04.06.2010 / 14:54