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?
fonte
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.Respostas:
Este é o comportamento padrão para SSH. Ele protege chaves de usuário através da aplicação
rwx------
on$HOME/.ssh
e 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$HOME
diretório, ele poderá modificar maliciosamente as permissões$HOME/.ssh
, potencialmente seqüestrando as chaves do usuárioknown_hosts
ou algo semelhante. Em resumo, as seguintes permissões$HOME
ativadas 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+w
ouo+w
existir no$HOME
diretório. No entanto, o administrador pode substituir esse comportamento definindoStrictModes no
nosshd_config
arquivo de configuração (ou similar), embora deva ficar claro que isso não é recomendado .fonte
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.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.
fonte