Permissões SSH e diretório inicial

53

Levei horas para resolver esse problema de SSH com uma das contas da minha classe nos servidores da minha escola.

Eu não conseguia acessar uma conta de classe específica sem inserir minha senha, enquanto a autenticação sem senha funcionava com minhas outras contas de classe. O diretório .ssh / e todo o seu conteúdo tinham as mesmas permissões corretas que as outras contas de classe.

Acontece que o problema foram as permissões definidas no meu próprio diretório pessoal. A autenticação sem senha não funcionou quando as permissões no meu diretório HOME foram definidas como 770 (independentemente das permissões definidas para .ssh /), mas funcionaram com as permissões definidas como 755 ou 700.

Alguém sabe por que o SSH faz isso? É porque as permissões do diretório inicial são muito permissivas? Por que o SSH se recusa a se autenticar com as chaves pública / privada quando o diretório inicial é definido como mais permissivo que 700?

action_potato
fonte
11
Confirmou as respostas abaixo; o problema era que as permissões de grupo na pasta inicial foram definidas incorretamente (a mensagem de erro do auth.log foi: 'Autenticação recusada: propriedade incorreta ou modos para o diretório / home / <usuário>'). Vejo que o SSH tem razão em ser exigente quanto às permissões de diretório doméstico.
action_potato
5
Você sabia sobre as tags wikis que temos aqui? Se você clicar em ssh e learn more, em seguida , verá uma lista de verificação do que fazer quando o SSH não estiver funcionando e menciona as permissões do diretório inicial.
Gilles 'SO- stop be evil'
Ah, desculpe, eu não sabia disso! Obrigado pela atenção.
action_potato

Respostas:

54

Este é o comportamento padrão para SSH. Ele protege chaves de usuário através da aplicação rwx------on $HOME/.sshe garantir apenas o proprietário tenha permissões de escrita $HOME. Se um usuário que não seja o respectivo proprietário tiver permissão de gravação no $HOMEdiretório, ele poderá modificar maliciosamente as permissões $HOME/.ssh, potencialmente seqüestrando as chaves do usuário known_hostsou algo semelhante. Em resumo, as seguintes permissões $HOMEativadas serão suficientes para o SSH funcionar.

  • rwx------
  • rwxr-x---
  • rwxr-xr-x

O SSH não funcionará corretamente e enviará avisos às instalações de log se houver alguma variação g+wou o+wexistir no $HOMEdiretório. No entanto, o administrador pode substituir esse comportamento definindo StrictModes nono sshd_configarquivo de configuração (ou similar), embora deva ficar claro que isso não é recomendado .

George M
fonte
11
Obrigado por mencionar StrictModes no. Na minha configuração, uma ACL é configurada no diretório inicial do usuário de destino e em todos os descendentes para permitir modificações por um usuário semiprivilegiado ( u:operator:rwx), e o SSH não gostou disso.
intelfx
31

77x em seu diretório pessoal significa que todos com GID correto podem mover seu diretório .ssh e substituí-lo por outro. Usuários com o GID correto têm permissões de gravação / execução no diretório inicial e, portanto, podem renomear / criar arquivos / diretórios.

O SSH é muito exigente quando se trata de permissões, e deveria.

jippie
fonte