O problema é o fato de que as permissões de arquivos são muito abertas. Tente definir o modo de authorized_keys
para 600 e o .ssh
para 700.
EDITAR
The issue as exposed here is solved (about files modes of the
.ssh
folder.But an other issue persists so I create a new question : > Unable to login with SSH-RSA key
Eu não consigo mais me conectar à chave ssh-rsa para um usuário específico, mas ainda funciona para outros usuários.
O usuário git
definido como segue:
# cat /etc/passwd | grep git
git:x:1002:1002:,,,:/var/git:/bin/bash
Então você notou que este é o usuário do git, assim, sua casa é /var/git
, não está em /home
.
Agora, ssh sempre me pede senha:
$ ssh git@srv
git@srv's password:
Eu verifiquei os registros:
# tail -n 1 /var/log/auth.log
[...] Authentication refused: bad ownership or modes for file /var/git/.ssh/authorized_keys
Portanto, authorized_keys
como propriedade ou modos de configuração incorreta.
Eu não entendo porque aqui está o conf para este arquivo:
# ls -l /var/git/.ssh/ | grep auth
-rw-rw-r-- 1 git git 394 mai 22 17:39 authorized_keys
E aqui está (no caso ...) o pai .ssh
dir:
# ls -al /var/git/ | grep ssh
drwxrwxr-x 2 git git 4096 mai 22 17:39 .ssh
E o diretório $HOME
:
# ls -l /var/ | grep git
drwxr-xr-x 7 git git 4096 mai 27 10:49 git
Portanto, os proprietários são sempre git
, como grupos de proprietários. E os arquivos são legíveis, então onde poderia estar o truque?
Por razões de paranóia, o diretório .ssh
e authorized_keys
não devem ser graváveis em grupo. Eu acho que o pensamento é que o usuário deve ser o único com controle explícito sobre sua autorização. Eu acredito que uma solução para isso está na ACL. A outra solução é a configuração StrictModes=no
no arquivo de configuração do sshd. Mas seria muito perigoso fazer isso por causa de um usuário.
P.S. seu ls -l /var | grep git
é feito mais concisamente como ls -ld /var/git
O modo de diretório $HOME/.ssh
deve ser 700 e authorized_keys
deve ser legível apenas pelo proprietário, ou seja, modo 600:
chmod u=rwx,g=,o= /var/git/.ssh
chmod u=rw,g=,o= /var/git/.ssh/authorized_keys
Quanto à chave privada, deve ser somente leitura / gravação pelo proprietário:
chmod u=rw,g=,o= /var/git/.ssh/id_?sa