it-swarm-pt.com

Permissões na chave privada na pasta .ssh?

Eu mudei minhas permissões na minha pasta .ssh e agora quando eu uso um software que usa minha chave privada, eu tenho que digitar minha senha toda vez. 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:

[email protected] 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
[email protected] 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
[email protected] 1 Jody  staff  3855 Sep 13 22:35 known_hosts
351
Jody G

Normalmente você quer que as permissões sejam:

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

Eu estou supondo que você quer dizer que você tem que digitar sua senha de sistema/usuário 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.

585
tab33

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 efetuar o login. 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 outras pessoas: 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
  • Certifique-se de que 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
  • Certifique-se de que o diretório base do usuário esteja definido como o que você espera e que ele contenha a pasta .ssh correta que você está modificando. Se não, 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 o login: ssh [email protected]
82
Alex W

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

chmod g-w,o-w ~

35
Felipe Alvarez

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.

5
cdhowie

Felipe está correto - o diretório que contém seu diretório .ssh não deve ser gravável por grupo ou outro. Portanto, 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 depois de 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 esteja em seu diretório home .

4
mikentalk