Quero permitir que alguns usuários confiáveis coloquem arquivos scp em meu servidor (para um usuário específico), mas não quero dar a esses usuários uma casa, nem login ssh.
Estou tendo problemas para entender as configurações corretas de usuários/grupos que preciso criar para permitir que isso aconteça.
Vou dar um exemplo;
Tendo:
MyUser@MyServer
MyUser
pertence ao grupoMyGroup
- A casa do MyUser será, digamos,
/home/MyUser
SFTPGuy1@OtherBox1
SFTPGuy2@OtherBox2
Eles me dão o seu id_dsa.pub
e eu adiciono ao meuauthorized_keys
Acho que faria no meu servidor algo como
useradd -d /home/MyUser -s /bin/false SFTPGuy1
(e o mesmo para o outro ..)
E por último, useradd -G MyGroup SFTPGuy1
(e novamente, para o outro cara)
Eu esperaria então que os SFTPGuys pudessem sftp -o IdentityFile=id_dsa MyServer
e fossem levados para a casa do MyUser ...
Bem, este não é o caso... O SFTP continua me pedindo uma senha.
Alguém poderia apontar o que estou perdendo?
Muito obrigado,
f.
[EDITAR:Messano StackOverflow me perguntou se o arquivoauthorized_keys era legível para outros usuários (membros do MyGroup). É um ponto interessante, esta foi a minha resposta:
Bem, não foi (era 700), mas então alterei as permissões do diretório .ssh e do arquivo de autenticação para 750, embora ainda sem efeito. Acho que vale a pena mencionar que meu diretório inicial ( /home/MyUser
) também pode ser lido pelo grupo; a maioria dos diretórios é 750 e a pasta específica onde eles colocam os arquivos é 770.
Porém, quanto ao arquivo auth, acho que a autenticação seria realizada pelo usuário local em MyServer
, não é? se for assim, não entendo a necessidade de outros usuários lerem... bem... só estou pensando. ]
Responder1
Antes de tentar isso, leia até o final, por favor.
Você pode fazer o que quiser criando 2 usuários, colocando-os no mesmo grupo e fornecendo-lhes o mesmo diretório inicial. Em seguida, crie o arquivo ~/.ssh/authorized_keys na página inicial compartilhada com as chaves inseridas.
As contas devem ter um shell, portanto bloqueie-as, usermod -L LOGIN
o que impedirá o login interativo.
As permissões no diretório ~/.ssh precisam ser g:rx e ~/.ssh/authorized_keys precisam ser g:r--
chmod g+rx ~/.ssh
chmod g+r ~/.ssh/authorized_keys
Isso causa problemas ao sshd, 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 esse esquema funcionar agora você precisaquebrar as verificações embutidas do sshdeditando
/etc/sshd_config
e configurando StrictModes no
o arquivo StrictModes yes
. Reinicie o sshd para tornar as alterações conhecidas.
Deve funcionar como você deseja. Infelizmente, você retirou a segurança do sshd e poderá fazer alterações posteriormente que deixarão seu sistema totalmente aberto.
Para fazer isso com mais segurança, não faça nenhuma das alterações acima
Crie 2 contas de usuário no mesmo grupo e configure seu ~/.ssh/authorized_keys Crie um link de cada diretório inicial para o local onde você deseja que eles coloquem as coisas.
ln -s -n /path/to/stuff content
Bloqueie as permissões no diretório inicial para evitar que os usuários gravem neles.
Impedir que as contas façam login de forma interativa
usermod -L LOGIN
Altere as permissões em /path/to/stuff para permitir o acesso ao grupo.
Responder2
Parece que você deseja fornecer acesso a um ID de usuário que funciona 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ê deseja que eles se conectem apenas a esse ID de usuário no servidor, você pode fornecer a eles um arquivo .ssh/config que os mapeia diretamente para o ID de usuário correto.
Responder3
A resposta a esta pergunta -Como posso criar uma conta de usuário que permita apenas uploads via sftp?- recomenda um pacote chamadoscponly- Nunca usei, mas parece que pode fazer o que você quiser.
Responder4
inspecionar os arquivos de log pode ajudar. Por favor, insira o seguinte após um login "mal sucedido"
tail -n 50 /var/log/secure
e poste a saída