ssh “permissions são muito abertas”

Eu tive um problema com o meu Mac, onde eu não podia mais salvar qualquer tipo de arquivo no disco. Eu tive que reiniciar o leão OSX e redefinir as permissions em arquivos e acls.

Mas agora, quando quero confirmar um repository, recebo o seguinte erro do ssh:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. 

Quais níveis de permissão devo dar ao arquivo id_rsa?

As chaves precisam ser legíveis apenas por você:

 chmod 400 ~/.ssh/id_rsa 

600 parece estar bem também (na verdade melhor na maioria dos casos, porque você não precisa alterar as permissions de arquivo para editá-lo).

A parte relevante da manpage ( man ssh )

  ~/.ssh/id_rsa Contains the private key for authentication. These files contain sensitive data and should be readable by the user but not accessible by others (read/write/execute). ssh will simply ignore a private key file if it is accessible by others. It is possible to specify a passphrase when generating the key which will be used to encrypt the sensitive part of this file using 3DES. ~/.ssh/identity.pub ~/.ssh/id_dsa.pub ~/.ssh/id_ecdsa.pub ~/.ssh/id_rsa.pub Contains the public key for authentication. These files are not sensitive and can (but need not) be readable by anyone. 

Usando o Cygwin no Windows 8.1, há um comando que precisa ser executado:

Usuários chgrp ~ / .ssh / id_rsa

Então a solução postada aqui pode ser aplicada, 400 ou 600 está OK.

chmod 600 ~ / .ssh / id_rsa

Ref: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8

A solução independente de localidade que funciona no Windows 8.1 é:

 chgrp 545 ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa 

O GID 545 é um ID especial que sempre se refere ao grupo “Usuários”, mesmo que você use uma palavra diferente para Usuários.

0600 é o que o meu está definido (e está funcionando)

AFAIK os valores são:

700 para o diretório oculto “.ssh” onde o arquivo de chave está localizado

600 para o keyfile “id_rsa”

Há uma exceção para o requisito de permissions “0x00” em uma chave. Se a chave for de propriedade de raiz e pertencente ao grupo por um grupo com usuários, ela poderá ser “0440” e qualquer usuário desse grupo poderá usar a chave.

Eu acredito que isso funcionará com qualquer permissão no conjunto “0xx0”, mas eu não testei todas as combinações com todas as versões. Eu tentei 0660 com 5.3p1-84 no CentOS 6, e o grupo não é o grupo primário do usuário, mas um grupo secundário, e funciona bem.

Isso normalmente não seria feito para a chave pessoal de alguém, mas para uma chave usada para automação, em uma situação em que você não deseja que o aplicativo seja capaz de mexer na chave.

Regras semelhantes se aplicam às restrições do diretório .ssh.

o que funcionou para mim

Usuários de chgrp FOLDER

chmod 600 FOLDER

Intersting mensagem aqui. Os Syatems Operacionais são inteligentes o suficiente para negar conexões remotas se sua chave privada estiver aberta demais. Ele entende o risco em que as permissions para o id_rsa estão abertas (leia-se, é editável por qualquer pessoa).

{Um pode ter alterado o seu bloqueio primeiro e depois abri-lo com as chaves que ele já tinha. }

 cd ~/.ssh chmod 400 id_rsa 

PS:

Ao trabalhar nos vários servidores (não produção), a maioria de nós precisa conectar o servidor remoto com o ssh. Uma boa idéia é ter um código de nível de aplicativo (pode ser java usando jsch) para criar relações de confiança ssh entre servidores. Desta forma, a conexão será sem senha. Incase, o perl é instalado – também é possível usar o módulo ssh da rede.

Eu me deparei com esse erro enquanto eu estava jogando com o Ansible. Eu mudei as permissions da chave privada para 600 , a fim de resolver este problema. E funcionou!

 chmod 600 .vagrant/machines/default/virtualbox/private_key 

No Windows 10, o chmod e o chgrp do cygwin não eram suficientes para mim. Eu tive que clique direito no arquivo -> Propriedades -> Segurança (guia) e remover todos os usuários e grupos, exceto para o meu usuário ativo.

forneça permissão 400, execute o comando abaixo

 chmod 400 /Users/username/.ssh/id_rsa 

insira a descrição da imagem aqui

Eu estou usando o VPC no EC2 e estava recebendo as mesmas mensagens de erro. Percebi que estava usando o DNS público. Eu mudei isso para o DNS privado e vola !! funcionou…