Permissões na chave privada na pasta .ssh?

294

Alterei minhas permissões na minha pasta .ssh e, agora, quando uso um software que usa minha chave privada, tenho que digitar minha senha todas as vezes. Quais devem ser minhas permissões no meu arquivo id_rsa para não precisar digitar uma senha toda vez que eu usar um aplicativo que a use?

Atualmente, minhas permissões estão definidas para:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts
    
por JakeGould 26.11.2010 / 23:04

5 respostas

503

Normalmente, você deseja que as permissões sejam:

  • .ssh directory: 700 (drwx------)
  • chave pública ( .pub file): 644 (-rw-r--r--)
  • chave privada ( id_rsa ): 600 (-rw-------)
  • por fim, seu diretório pessoal não deve ser gravável pelo grupo ou por outras pessoas (no máximo 755 (drwxr-xr-x) ).

Estou assumindo que você quer dizer que você tem que digitar sua senha de sistema / usuário a cada vez, e que anteriormente você não precisava. A resposta do cdhowie é assumir que você definiu uma senha / frase secreta ao gerar suas chaves, e se você fez isso, como ele diz, você terá que digitar sua senha toda vez, a menos que você use um agente ssh.

    
por 26.11.2010 / 23:24
70

Eu estava lutando com isso para sempre e finalmente descobri o que é necessário. Substitua $USER em todos os lugares pelo nome de usuário do SSH no qual você deseja fazer login no servidor. Se você estiver tentando fazer o login como root , precisará usar /root/.ssh etc., em vez de /home/root/.ssh , que é como é para usuários não-root.

  • O diretório inicial no servidor não deve poder ser gravado por outros: chmod go-w /home/$USER
  • A pasta
  • SSH no servidor precisa de 700 permissões: chmod 700 /home/$USER/.ssh
  • O arquivo
  • Authorized_keys precisa de 644 permissões: chmod 644 /home/$USER/.ssh/authorized_keys
  • Verifique se user possui os arquivos / pastas e não root : chown user:user authorized_keys e chown user:user /home/$USER/.ssh
  • Coloque a chave pública gerada (de ssh-keygen ) no arquivo authorized_keys do usuário no servidor
  • Verifique se o diretório pessoal do usuário está definido como o que você espera e se ele contém a pasta .ssh correta que você está modificando. Caso contrário, use usermod -d /home/$USER $USER para corrigir o problema
  • Finalmente, reinicie o ssh: service ssh restart
  • Em seguida, certifique-se de que o cliente tenha os arquivos de chave pública e chave privada na pasta .ssh do usuário local e faça login: ssh [email protected]
por 09.06.2015 / 22:39
32

Assegure-se também de que seu diretório pessoal não seja gravável por outros usuários.

chmod g-w,o-w ~

    
por 03.01.2013 / 04:50
5

As permissões não devem ter nada a ver com isso. Sua chave privada é criptografada com a senha, portanto, é necessário inseri-la para que a chave privada seja descriptografada e utilizável.

Você pode considerar a execução de um agente ssh, que pode armazenar em cache as chaves descriptografadas e fornecê-las aos aplicativos que precisam delas.

    
por 26.11.2010 / 23:07
4

Felipe está correto - o diretório que contém seu diretório .ssh não deve ser gravável por grupo ou outro. Assim, chmod go-w ~ é a próxima coisa lógica a tentar se você ainda for solicitado a fornecer uma senha quando estiver executando ssh'ing após executar ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys , supondo que você não atribuiu uma frase secreta no comando ssh-keygen e seu diretório .ssh no seu diretório pessoal.

    
por 17.04.2014 / 22:20