ssh "permissões estão muito abertas" erro

2055

Eu tive um problema com o meu mac, onde não consegui mais salvar nenhum tipo de arquivo no disco. Eu tive que reiniciar o OSX lion e redefinir as permissões em arquivos e acls.

Mas agora, quando quero confirmar um repositório, 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?

Yannick Schall
fonte
20
Obrigado por perguntar ao quesiton. Uma experiência melhor seria para quem escreveu essa mensagem de erro sugerir algumas configurações válidas (como 600 ou 400, conforme sugerido abaixo). Os programadores que não escrevem mensagens de erro suficientemente completas úteis são torturadores a todos nós há anos!
George Pligoropoulos
FWIW, isso está relacionado à ativação StrictModesno sshdservidor, na página de manual : "StrictModes Especifica se o sshd (8) deve verificar os modos de arquivo e a propriedade dos arquivos e do diretório inicial do usuário antes de aceitar o login". - você pode desativar isso, porém não sugerido.
masseyb

Respostas:

3474

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

chmod 400 ~/.ssh/id_rsa

Se as chaves precisarem ser gravadas por você:

chmod 600 ~/.ssh/id_rsa

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

A parte relevante da página de manual ( 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.
troca rápida
fonte
299
400 é muito baixo, o que o torna não gravável pelo seu próprio usuário. 600 é realmente recomendado, pois permite que o proprietário leia e grave, e não apenas leia.
precisa saber é o seguinte
8
Descobri hoje que há momentos em que 400 é relevante. Suponha que você tenha um arquivo allowed_keys com os recursos no-pty et al definidos. Se o arquivo for gravável, o usuário poderá substituir o arquivo allowed_keys e obter acesso interativo ao shell! Algo a ter em mente, embora certamente não seja o caso geral para a maioria das pessoas.
quickshiftin
17
Na verdade, a AWS recomenda a permissão 400 em seu site. Foi o que fiz no OS X e funcionou.
George Mylonas
5
Definitivamente, isso funciona e é mais seguro. A única desvantagem é que você precisa alterá-lo para 600 para editar. Para id_rsa e id_rsa.pub, duvido que isso importe, porque você raramente edita esses arquivos, mas, para as keys_computadas, isso pode ser irritante. É melhor entender as compensações e configurar cada sistema adequadamente.
quickshiftin
3
Suponho que isso também depende da frequência com que você os está editando. Muitas pessoas definem e esquecem; assim, 400 seriam mais seguras dos outros e de suas próprias ações; modificando para 600 quando necessário. Se faz parte do seu fluxo de trabalho e do seu ssh-savy, talvez seja um obstáculo continuar alterando as permissões.
precisa saber é o seguinte
99

Usando o Cygwin no Windows 8.1, é necessário executar um comando:

Usuários do chgrp ~ / .ssh / id_rsa

Em seguida, a solução postada aqui pode ser aplicada; 400 ou 600 estão OK.

chmod 600 ~ / .ssh / id_rsa

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

tanza9
fonte
8
dependente da localidade. Eu tive que executar "chgrp Użytkownicy ~ / .ssh / id_rsa", já que "Usuários" não errou nesse grupo.
Marcos
Eu tive que fazer isso também. Meu diretório cygwin estava no local padrão ( C:\cygwin64), portanto, provavelmente herdou as permissões. Estranho que isso não tenha acontecido em outros laptops de minha propriedade.
Zach Thacker 15/10
3
@Marcos Eu adicionei uma resposta que funciona independentemente do local: stackoverflow.com/a/28647713/67013
thehouse
4
Windows 10. Usou apenas o segundo comando. Funcionou como um encanto.
amigos estão dizendo sobre stalkAlex
Observe que, para instalações em idiomas alternativos, o grupo 'Usuários' possui identificadores alternativos.
John Rumpel
43

A solução independente da 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 o código de idioma use uma palavra diferente para Usuários.

a casa
fonte
31

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

Devin Ceartas
fonte
24

AFAIK os valores são:

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

600 para o arquivo de chave "id_rsa"

ajaaskel
fonte
19

Eu tenho o erro no meu windows 10, então defino a permissão da seguinte forma e funciona.

Permissão para id_rsa do windows 10

Em detalhes, remova outros usuários / grupos até que ele tenha apenas 'SISTEMA' e 'Administradores'. Em seguida, adicione seu login do Windows nele apenas com permissão de leitura.

Observe que o id_rsaarquivo está na c:\users\<username>pasta

Supawat Pusavanno
fonte
Eu tenho o mesmo problema no Win-10. Com base na sua explicação, não fique claro o que você realmente permitiu e negou - tenho "usuários" e "usuários autenticados" e não "usuário específico" como opções + Sistema e Administradores. Além disso, eu não conseguia descobrir o cygwin - para instalar ou usar. (?)
Sam-T
2
para Win10 precisa mover sua chave para a casa do usuário - isso funcionou perfeitamente. Eu estava tentando dar o caminho completo para a chave e mexer com as permissões - nada funcionou.
Sam-T
@ Sam-T, se você não conseguir ver seu nome na lista, pode adicioná-lo pressionando, Edit...então pressione Add...e digite seu nome na caixa de texto, em "Enter the object names to select"seguida pressione o Check Namesbotão (e pressione OKe outra OK) e seu nome deve ser listado na Securityguia
Supawat Pusavanno
Provavelmente, posso adicionar o nome especificamente - de acordo com suas instruções. Mas minha pergunta principal era - quais permissões exatas para Negar e Permitir para todos . Enquanto isso, como mencionado, eu era capaz de resolver o problema simplesmente adicionando .pemomyuser directory
Sam-T
16

Há uma exceção no requisito de permissões "0x00" em uma chave. Se a chave pertencer à raiz e pertencer ao grupo por um grupo com usuários, poderá ser "0440" e qualquer usuário desse grupo poderá usar a chave.

Acredito que isso funcionará com todas as permissões no conjunto "0xx0", mas 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 principal 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 possa mexer com a chave.

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

syberghost
fonte
15

forneça 400 permissões, execute o comando abaixo

chmod 400 /Users/username/.ssh/id_rsa

insira a descrição da imagem aqui

Sujit Dhamale
fonte
ótimo! Isso resolveu o problema para mim. Obrigado!
Emanuela Colta
11

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

Praia Jared
fonte
Esta é a única solução que está funcionando :) Obrigado, você economizou meu tempo
Atul
Eu descobri que, depois de fazer isso, eu poderia fazer o ssh no prompt de comando normal do Windows também. Não há necessidade de usar Cygwin. Ótimo!
Atul
8

Isto é o que funcionou para mim (no mac)

sudo chmod 600 path_to_your_key.pem 

então :

ssh -i path_to_your_key user@server_ip

Espero que ajude

lansanalsm
fonte
5

o que funcionou para mim

Usuários do chgrp PASTA

chmod 600 FOLDER

Jerome Ansia
fonte
chgrp: grupo inválido: «Usuários»
Eu tentei, mas continuo jogando fora 'grupo inválido': Usuários '', por quê? usando o Windows 10, o PowerShell
Jason Goal
4

Eu tenho o mesmo problema após a migração de outro mac. E bloqueou para conectar o github pela minha chave.

Redefino a permissão como abaixo e funciona bem agora.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)
Jeff Gu Kang
fonte
4

Erro do Windows 10 ssh no Ubuntu EC2 "permissões estão muito abertas" na AWS

Eu tive esse problema ao tentar ssh em uma instância do Ubuntu EC2 usando o arquivo .pem da AWS.

No Windows isso funcionou quando eu coloquei essa chave em um criado na pasta .ssh

C:\Users\USERNAME\.ssh\private_key

Para alterar as configurações de permissão no Windows 10:

Configurações de arquivo> Segurança> Avançado

Desativar herança

Converter permissões herdadas em permissões explícitas

Remova todas as entradas de permissão, exceto Administradores

Poderia então se conectar com segurança.

lm5050
fonte
4

Para mim (usando o Ubuntu Subsystem para Windows) a mensagem de erro foi alterada para:

 Permissions 0555 for 'key.pem' are too open

depois de usar o chmod 400. Acontece que usar o root como usuário padrão foi o motivo.

Mude isso usando o cmd:

 ubuntu config --default-user your_username
Daniel Kettemann
fonte
3

Mensagem interessante aqui. Os sistemas operacionais são inteligentes o suficiente para negar conexões remotas se sua chave privada estiver muito aberta. Ele entende o risco em que as permissões para o id_rsa estão abertas (a leitura é editável por qualquer pessoa).

{Primeiro, você pode alterar seu cadeado e depois abri-lo com as chaves que ele já possui}

cd ~/.ssh
chmod 400 id_rsa

Enquanto trabalhamos em vários servidores (sem produção), a maioria de nós sente necessidade de conectar um servidor remoto ao 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. Dessa forma, a conexão será sem senha. No caso, o perl está instalado - também é possível usar o módulo net ssh.

Piyush Baijal
fonte
1

Me deparei com esse erro enquanto brincava com o Ansible. Alterei as permissões da chave privada para 600 para resolver esse problema. E funcionou!

chmod 600 .vagrant/machines/default/virtualbox/private_key
vildhjarta
fonte
1

Tentei 600 níveis de permissão para minha chave privada e funcionou para mim. chmod 600 privateKey [dev] $ ssh -i privateKey usuário @ ip funcionou

chmod 755 privateKey [dev] $ ssh -i privateKey usuário @ ip que estava dando o problema abaixo: Permissões 0755 para 'privateKey' estão muito abertas. É necessário que seus arquivos de chave privada NÃO sejam acessíveis por terceiros. Essa chave privada será ignorada. Carregar chave "privateKey": permissões incorretas

deepu kumar singh
fonte
0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    Primeiro, encontre o local das chaves públicas, porque quando você tenta fazer login no ftp usando essa chave pública. primeiro, precisamos criar uma chave e configuramos para definir essas permissões para 600.
            Verifique se você está no local correto.
            passo 1:
            vá para o local correto
            passo 2:
            Depois de estar no local certo
 comando: 
     chmod 600 id_rsa

        This has solved my issue.
Ravi Teja Mureboina
fonte
-1

Estou usando a 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...

user3195783
fonte
A Amazon recomenda o chmod 400 e usando o DNS público. Consulte a documentação aqui: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ddri
-2

para o Win10, mova sua chave para o diretório home do usuário para sistemas operacionais semelhantes ao linux, você precisa chmod para 700 como 700 ou 600 etc.

Fedulov Oleg
fonte
para Win10 precisa mover sua chave para a casa do usuário - isso funcionou perfeitamente. Eu estava tentando dar o caminho completo para a chave e mexer com as permissões - não funcionou.
Sam-T