Eu usei o PuTTY Key Generator para gerar uma chave RSA-2 de 4096 bits com uma senha longa.
Eu salvo o .ppk e uma chave pública no formato openSSL. A chave pública do formato putty não funciona.
Em qualquer caso, meu erro é o seguinte:
$ ssh -T [email protected]
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide shell access.
Qual é o problema?
Eu uso o Pageant para carregar as chaves e o Git Bash para tentar a conexão ssh. Também carreguei a chave no GitHub, não tenho certeza do que estou fazendo de errado.
Eu tentei adicionar uma nova linha e não adicionar uma nova linha no GitHub
git
github
ssh
public-key
JordanGS
fonte
fonte
key_load_public: invalid format
exatamente enquanto executo o comando, antes de inserir a senha longa?Respostas:
Como Roland mencionou em sua resposta, é um aviso de que o
ssh-agent
não entende o formato da chave pública e mesmo assim, a chave pública não será usada localmente.No entanto, também posso elaborar e responder por que o aviso está lá. Simplesmente se resume ao fato de que o PuTTY Key Generator gera dois formatos diferentes de chave pública, dependendo do que você faz no programa.
Nota: Ao longo de minha explicação, os arquivos-chave que estarei usando / gerando serão nomeados
id_rsa
com suas extensões apropriadas. Além disso, para conveniência de copiar e colar, a pasta pai das chaves será considerada como sendo~/.ssh/
. Ajuste esses detalhes para atender às suas necessidades conforme desejado.Os formatos
Link para a documentação relevante do PuTTY
SSH-2
Quando você salva uma chave usando o PuTTY Key Generator usando o botão "Salvar chave pública", ela é salva no formato definido pelo RFC 4716 .
Exemplo:
OpenSSH
Ao contrário da crença popular, este formato não é salvo pelo gerador. No entanto, ele é gerado e mostrado na caixa de texto intitulada "Chave pública para colar no arquivo OpenSSH authorized_keys". Para salvá-lo como um arquivo, você deve copiá-lo manualmente da caixa de texto e colá-lo em um novo arquivo de texto.
Para a chave mostrada acima, seria:
O formato da chave é simplesmente
ssh-rsa <signature> <comment>
e pode ser criado reorganizando o arquivo formatado SSH-2.Regenerando chaves públicas
Se você estiver fazendo uso do
ssh-agent
, provavelmente também terá acesso assh-keygen
.Se você tiver sua chave privada OpenSSH (
id_rsa
arquivo), poderá gerar o arquivo de chave pública OpenSSH usando:Se você tiver apenas a chave privada PUTTY (
id_rsa.ppk
arquivo), será necessário convertê-la primeiro.id_rsa.ppk
arquivoid_rsa
(sem extensão)Agora que você tem uma chave privada OpenSSH, pode usar a
ssh-keygen
ferramenta acima para realizar manipulações na chave.Bônus: O formato de chave pública codificado por PEM PKCS # 1
Para ser honesto, não sei para que essa chave é usada, pois não precisava dela. Mas tenho isso em minhas anotações que compilei ao longo dos anos e vou incluí-lo aqui para bondade saudável. O arquivo terá a seguinte aparência:
Este arquivo pode ser gerado usando uma chave privada OpenSSH (conforme gerado em "Gerando novamente chaves públicas" acima) usando:
Como alternativa, você pode usar uma chave pública OpenSSH usando:
Referências:
fonte
.ppk
para um.pub
arquivo. O efeito colateral daid_rsa
chave privada intermediária realmente sendo usada por outro programa foi esquecido. Eu mudei a linguagem "preferencialmente sem extensão" para "(sem extensão)" para limpar qualquer ambiguidade. Também aproveitei a oportunidade para reformular algumas queixas que surgem sempre que olho para esta resposta. Obrigado por sua contribuição.ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
isso resolveu. THX!Existe uma solução simples se você pode instalar e usar a ferramenta puttygen. Abaixo estão as etapas. Você deve ter a senha da chave privada.
etapa 1: Baixe o puttygen mais recente e abra o puttygen
etapa 2: carregue seu arquivo de chave privada existente, veja a imagem abaixo
passo 3: digite a senha para a chave, se solicitado, e pressione ok
passo 4: conforme mostrado na imagem abaixo, selecione a guia do menu "conversão" e selecione "Exportar chave OpenSSH"
Salve o novo arquivo de chave privada no local preferido e use de acordo.
fonte
load pubkey invalid format
aviso quando exportei a chave com Exportar chave OpenSSH . Ele foi embora ao usar Exportar chave OpenSSH (forçar novo formato de arquivo) .apt install putty-tools
ouyum install putty
entãosudo puttygen private.ppk -O private-openssh-new -o private.pem
TL; DR: certifique-se também de que
id_rsa.pub
está em ascii / UTF-8.Tive o mesmo problema, porém a resposta aceita sozinha não funcionou por causa da codificação do texto, que era um problema adicional fácil de ignorar.
Quando eu corro
no Windows PowerShell, ele salva a saída
id_rsa.pub
em codificação UTF-16 LE BOM , não em UTF-8 . Esta é uma propriedade de algumas instalações do PowerShell, que foi discutida em Usando o PowerShell para gravar um arquivo em UTF-8 sem o BOM . Aparentemente, o OpenSSH não reconhece a codificação de texto anterior e produz um erro idêntico:Copiar e colar a saída de
ssh-keygen -f ~/.ssh/id_rsa -y
em um editor de texto é a maneira mais simples de resolver isso.PS Isso poderia ser um acréscimo à resposta aceita , mas ainda não tenho carma suficiente para comentar aqui.
fonte
ssh-keygen -f ~/.ssh/id_rsa -y | ac ~/.ssh/id_rsa.pub
vez disso.No caso de você copiar sua chave pública com a área de transferência e colá-la, pode acontecer que a string da chave pública que contém uma nova linha seja quebrada.
Certifique-se de que sua string de chave pública seja formada como uma linha.
fonte
Parece que
ssh
não consegue ler sua chave pública. Mas isso não importa.Você carrega sua chave pública no github, mas autentica usando sua chave privada . Veja, por exemplo, a seção ARQUIVOS em
ssh(1)
.fonte
Em vez de salvar diretamente a chave privada, vá para Conversões e Exportar Chave SSh. Tive o mesmo problema e isso funcionou para mim
fonte
O erro é enganoso - ele diz "
pubkey
" enquanto aponta para um arquivo de chave privada~/.ssh/id_rsa
.No meu caso, era simplesmente uma chave pública ausente (já que não a restaurei de um cofre).
DETALHES
Eu costumava pular a implantação
~/.ssh/id_rsa.pub
por scripts automatizados.Todos os
ssh
usos funcionaram, mas o erro me fez pensar em uma possível bagunça.Nem um pouco -
strace
ajudou a notar que o gatilho era na verdade o*.pub
arquivo:fonte
Eu tive o mesmo aviso. Era uma chave muito antiga. Eu gerei novamente uma chave no OpenSSH 7 atual e o erro foi embora.
fonte
Então, após a atualização, tive o mesmo problema. Eu estava usando o PEM
key_file
sem extensão e simplesmente adicionando resolvi.pem
meu problema. Agora o arquivo estákey_file.pem
.fonte
Se você estiver usando o Windows 10 com o SSH integrado, a partir de agosto de 2020 ele só oferece suporte a chaves ed25519. Você obterá o
key_load_public: invalid format
erro se usar, por exemplo, uma chave RSA.Com relação a esse problema do GitHub, ele deve ser corrigido por meio do Windows Update em algum momento em 2020. Portanto, uma solução é apenas esperar o envio da atualização.
Se você não puder esperar, uma solução alternativa é gerar uma nova chave ed25519, o que é um bom conselho de qualquer maneira .
Você pode usá-lo, por exemplo, com o github, mas alguns sistemas mais antigos podem não suportar este formato mais recente.
Depois de gerar sua chave, se você estiver usando um dos recursos abaixo, não se esqueça de atualizá-los!
~\.ssh\config
ainda pode apontar para a chave antiga.ssh-add
comandofonte