Chave SSH: "As permissões 0644 para 'id_rsa.pub' estão muito abertas." no mac

261

Eu gero um par de chaves ssh no meu mac e adiciono a chave pública ao meu servidor ubuntu (na verdade, é uma máquina virtual no meu mac), mas quando tento fazer login no servidor ubuntu, ele diz:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

Eu tentei várias maneiras de resolver isso, alterar o modo de arquivo de chave, alterar o modo de pasta, como algumas respostas no stackoverflow, mas não funciona.
a permissão do arquivo de chave:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

por favor me dê uma idéia ... ===========================================

I escreva as informações do host em ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Eu corro o comando "ssh -v ubuntuvm", ele exibe:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).
土豆 丫
fonte
1
Você poderia editar sua pergunta para incluir o comando ssh específico que você está executando? Se o arquivo-chave em questão for especificado no arquivo de configuração ssh, inclua também as linhas relevantes do arquivo de configuração.
Kenster 29/04
Para mim foram "permissões ruins"
insira
Enfrento esse problema ao adicionar -i id_rsa.pubno comando ssh usar para conexão. Parece que a imposição de usar alguma chave pública na força de comando ssh para solicitar senha (mesmo quando a frase secreta estava vazia, pelo menos no meu caso)
Diego Andrés Díaz Espinoza

Respostas:

148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Parece que você está tentando usar o arquivo de chave errado. O arquivo com a extensão ".pub" é o arquivo de chave pública . O arquivo correspondente sem a extensão ".pub" é o arquivo de chave privada . Ao executar um cliente ssh para conectar-se a um servidor remoto, você deve fornecer o arquivo de chave privada ao cliente ssh.

Você provavelmente tem uma linha no seu .ssh/configarquivo (ou /etc/ssh_config) que se parece com isso:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Você precisa remover a extensão ".pub" do nome do arquivo:

IdentityFile .../.ssh/vm/vm_id_rsa
Kenster
fonte
Eu estava tendo esse problema com o SQLPro e selecionou incorretamente o .pubarquivo public ( ) em vez do arquivo privado.
Henry Henry
1
Eu tenho esse erro quando eu fiz ssh -i id_ed25519.pubenquanto fazendo ssh -i id_ed25519obras
Boris
2
Obrigado me salvou aqui.
Abner
Brilhante! Obrigado!
Alliswell 6/04
575

Eu sugiro que você faça:

chmod 400 ~ / .ssh / id_rsa

Para mim, o trabalho está bem.

Rick Benetti
fonte
33
“Permissions 0644 for 'id_rsa.pub' are too open."e a chave foi, portanto, ignorada. Provavelmente porque copiei o arquivo-chave do meu outro PC. Mas a correção de permissões corrigiu o problema. THX!
parasrish
2
@ xoxn - 1'w3k4n Por que isso é tão ruim? Faz sentido, se as pessoas copiam ou gerenciam mal o acesso de leitura e gravação a esses arquivos confidenciais, que eles devem ser corrigidos.
Gerard
5
Isso não é fita adesiva. Se você copiou seus IDs, isso faz sentido.
ALisboa 4/04
Trabalhou para mim como uma solução ao copiar chaves ssh do computador antigo!
Nick
1
Funciona também na WSL
h-rai
59

A chave deve ser legível pelo usuário conectado.

Tente o seguinte:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub
user3029620
fonte
Com a chave pública 400 ou 600, recebo um formato inválidossh-add ~/.ssh/id_rsa.pub
rhand
53
chmod 400 path/to/filename

Este trabalho para mim. Quando criei esse arquivo, sou capaz de me conectar à minha instância do EC2

Muhammad Wajahat Anwar
fonte
É um prazer :) Obrigado
Muhammad Wajahat Anwar
2
Esta é a resposta
Mladen Danic
23

Depois de executar o comando abaixo, ele funciona para mim

sudo chmod 600 /path/to/my/key.pem
Ashok
fonte
20

No meu caso, era um arquivo .pem. Acontece que também é bom para isso. Permissões alteradas do arquivo e funcionou.

chmod 400 ~/.ssh/dev-shared.pem

Obrigado por todos aqueles que ajudaram acima.

Vaibhav Tripathi
fonte
13

Se as chaves estiverem no diretório ~ / .ssh, use

chmod 400 ~ / .ssh / id_rsa

Se as chaves estiverem em um diretório diferente, use

caminho do diretório chmod 400 / id_rsa

Isso funcionou para mim.

Anirban
fonte
2
Como isso melhora as outras respostas?
Nico Haase
2
não é a chave do pub que deve ser protegida, é a particular
Picarus
A chave privada deve ser protegida.
Basã
Funciona para mim. Acho que foi chmod 400 ~/.ssh/id_rsaisso que você quis dizer com @Anirban. Como mencionado acima: O arquivo com a extensão ".pub" é o arquivo de chave pública. O arquivo correspondente sem a extensão ".pub" é o arquivo de chave privada. Precisamos proteger um particular.
precisa saber é o seguinte
Editou a resposta. Deve ser a chave privada.
Anirban
12

Muitas respostas semelhantes, mas nenhuma explicação ...

O erro é gerado porque as permissões do arquivo de chave privada estão muito abertas. É um risco de segurança.

Altere as permissões no arquivo de chave privada para que sejam mínimas (somente leitura pelo proprietário)

  1. Alterar proprietário chown <unix-name> <private-key-file>
  2. Definir permissões mínimas (somente leitura para o proprietário do arquivo) chmod 400 <private-key-file>
James Wierzba
fonte
7

Quanto a mim, o modo padrão de id_rsaé 600, o que significa readablee writable.

Depois de enviar esse arquivo para um repositório git e retirá-lo de outro PC, às vezes o modo do arquivo de chave privada se torna -rw-r--r--.

Quando puxo o repositório com ssh após especificar o arquivo de chave privada, ele falhou e solicitou avisos iguais com você. A seguir está o meu roteiro.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull [email protected]:someone/somerepo.git "

Corrijo esse problema apenas alterando o modo para 600.

chmod 600 $PATH_TO_RSA/id_rsa
W.Perrin
fonte
6

dar permissão 400 torna a chave privada e não acessível por alguém desconhecido. Torna a chave como protegida.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Himanshi Singh
fonte
2

chmod 400 /etc/ssh/* funciona para mim.

Michal Šípek
fonte
3
Você pode fazer isso desde que perceba que está afetando todas as chaves no diretório.
J2N /
2

Se você estiver usando um arquivo .ssh / config, tente

chmod 0400 .ssh/config

então:

chmod 0400 .ssh/<<KEYFILE_PATH>>
Shell_Leko
fonte
2

Quem sugeriu o chmod 400 id_rsa.pub não parecia certo. Era bem possível que op usasse a tecla pub em vez da chave privada para o ssh.

Portanto, pode ser tão simples quanto ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostcorrigi-lo.

--- atualização ---

Verifique este artigo https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 para saber como configurar a chave ssh

Qiulang
fonte
Poderia ser, embora, no meu caso, quando procurei esse problema e cheguei à resposta, o chmod 400 fosse o que eu precisava para resolver o meu problema. Obrigado a todos que ajudaram!
J2N 10/09
1

Basta correr abaixo para o seu pem

sudo chmod 600 /path/to/my/key.pem 
Pravin
fonte
-8

Eu removi o .pub filee funcionou.

user2942483
fonte
1
A remoção do arquivo .pub não é necessária. Isso também significa que você não possui um registro da chave pública em sua máquina para uso posterior.
Henry Henry
1
Se você possui o OpenSSH, pode gerar novamente o arquivo de chave pública ausente da chave privada usando ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Então, não está realmente perdido. :)
dannysauer