Esta é provavelmente uma pergunta estupidamente simples para alguns :)
Criei uma nova instância linux no Amazon EC2 e, como parte disso, baixei o arquivo .pem para permitir o SSH.
Quando tentei ssh com:
ssh -i myfile.pem <public dns>
Eu tenho:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).
Após este post , tentei chmod +600 o arquivo pem, mas agora quando ssh eu apenas recebo:
Permission denied (publickey).
Que erro de estudante estou cometendo aqui? O arquivo .pem está na minha pasta pessoal (em osx). Suas permissões são assim:
-rw-------@ 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
amazon-web-services
authentication
ssh
amazon-ec2
permissions
Matt Roberts
fonte
fonte
chmod 400 myfile.pem
o usomyfile.ppk
gerado pelo PuTTYgen a partir do arquivo pem.Respostas:
O problema está no mod errado no arquivo.
Resolvido facilmente executando -
chmod 400 mykey.pem
Retirado das instruções da Amazon -
400 protege-o, tornando-o somente leitura e somente para o proprietário.
fonte
ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IP
corrigiu o problema. Talvez esta deve ser a resposta aceita ...Você provavelmente está usando o nome de usuário errado para fazer o login:
ubuntu
ec2-user
root
ouadmin
Para fazer login, você precisa ajustar seu comando ssh:
HTH
fonte
Permission denied (publickey).
e nada mais ...chmod 500 <path_to_pem_file>
deve fazê-lo.Eu sei que isso é muito tarde para o jogo ... mas isso sempre funciona para mim:
passo 1
passo 2, basta ssh :)
por exemplo
espero que isso ajude alguém.
fonte
ssh-agent -s
relata SSH_AGENT_PID = 3409; ssh-add dá o mesmo erro que o anterior ......... Qualquer ajuda aqui plzOk, cara, a única coisa que funcionou para mim foi:
Alterar permissões da chave
Certifique-se de fazer login usando o usuário ec2 e o endereço correto ec2-99 .... O endereço ec2-99 fica na parte inferior do console do aws quando você faz login e vê sua instância listada
fonte
Dê uma olhada neste artigo . Você não usa o DNS público, mas o formulário
onde o nome está visível no seu painel AMI
fonte
Altere a permissão para o arquivo de chave com:
Consulte a documentação da AWS para conectar-se à instância:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
fonte
No Windows, você pode ir para as propriedades do arquivo pem, e ir para a guia segurança, depois para avançar no botão.
remova a herança e todas as permissões. então conceda a si mesmo o controle total. afinal, o SSL não fornecerá o mesmo erro novamente.
fonte
Eu sei que esta pergunta já foi respondida, mas para aqueles que tentaram todas elas e você ainda está recebendo a irritante "Permissão negada (chave pública)". Tente executar seu comando com SUDO. Obviamente, essa é uma solução temporária e você deve definir permissões corretamente, mas pelo menos isso permitirá que você identifique que seu usuário atual não está executando os privilégios necessários (como você supôs)
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
Depois de fazer isso, você receberá uma mensagem como esta:
Please login as the user "ec2-user" rather than the user "root"
O que também é escassamente documentado. Nesse caso, faça o seguinte:
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user
E você terá o glorioso:
fonte
No terminal Mac, fazer "chmod 400 xyz.pem" não me ajudou, continuava dizendo permissão negada. Para usuários do Ubuntu, eu sugeriria
ssh-add xyz.pem
ssh -i xyz.pem [email protected]
(observe que o usuário é ubuntu)fonte
Práticas recomendadas de chaves SSH e permissão de arquivo:
chave pública / arquivo .pub - 0600 (somente leitura e gravação pelo proprietário)
chmod XXXX file/directory
fonte
usuário ssh -i /.pem @ host-machine-IP
Eu acho que é porque você inseriu credenciais incorretas ou está usando uma chave pública em vez de privada ou suas permissões de porta estão abertas para que ALL seja ssh. Isso é ruim para a Amazon.
fonte
Logon alternativo usando o PuTTY. É bom, mas precisa de alguns passos.
Estou usando o PuTTY 0,66 no Windows.
fonte
Além das outras respostas, aqui está o que eu fiz para que isso funcionasse:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
ssh-add ~/.ssh/key.pem
Agora você deve poder ssh EC2 (:
fonte
Faça um chmod 400 yourkeyfile.pem Se sua instância for Amazon linux, use ssh -i yourkeyfile.pem ec2-user @ ip para ubuntu ssh -i yourkeyfile.pem ubuntu @ ip para centos ssh -i yourkeyfile.pem centos @ ip
fonte
Pode haver três razões por trás desse erro.
fonte
O problema para mim foi que meu arquivo .pem estava em uma das minhas partições NTFS. Eu mudei para a minha partição linux (ext4).
Deu as permissões necessárias executando:
chmod 400 my_file.pem
E funcionou.
fonte
Bem, olhando para a descrição do seu post, sinto que houve 2 erros cometidos por você: -
Defina as permissões corretas para a chave privada . O comando abaixo deve ajudá-lo a definir a permissão correta de arquivo.
chmod 0600 mykey.pem
Usuário ec2 errado no qual você está tentando fazer login .
Olhando para o seu log de depuração, acho que você gerou uma instância do Amazon linux. O usuário padrão para esse tipo de instância é
ec2-user
. Se a instância tivesse sido no ubuntu, seu usuário padrão teria sidoubuntu
.ssh -i privatekey.pem default_ssh_user@server_ip
fonte: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
fonte
Lista de controle:
Você está usando o arquivo .pem de chave privada certo?
Suas permissões estão definidas corretamente? (Minhas AMIs da marca Amazon funcionam com 644, mas a Red Hat deve ter pelo menos 600 ou 400. Não conheço o Ubuntu.)
Você está usando o nome de usuário correto na sua linha ssh? Marca Amazon = "usuário ec2", Red Hat = "root", Ubuntu = "ubuntu". O usuário pode ser especificado como "ssh -i pem nome de usuário @ nome do host" OU "ssh -l nome de usuário -i pem nome do host"
fonte
Basta alterar a permissão do arquivo pem para 0600, permitindo apenas o usuário permitido, e ele funcionará como um encanto.
E então tente ssh, ele funcionará perfeitamente.
fonte
Por permissão padrão, não estão permitindo a chave pem. Você apenas precisa alterar a permissão:
chmod 400 xyz.pem
e se instância do ubuntu, conecte-se usando:
ssh -i xyz.pem [email protected]
fonte
O arquivo de chave não deve ser visualizado publicamente, portanto, use a permissão 400
Se o comando acima mostra erro de permissão, use
Agora ssh na máquina ec2, se você ainda enfrentar o problema, use ec2-user
ssh -i keyfile.pem [email protected]
fonte
.400 protege-o, tornando-o somente leitura e somente para o proprietário.
Você pode encontrar a resposta no guia ASW.
fonte
A seguir estão as etapas simples para o usuário Linux se conectar ao servidor usando o arquivo .pem:
Etapa 1: Para o local do arquivo pem e copie-o para o local .ssh inicial.
Etapa 2: alterar a permissão
Etapa 3: Execute o seguinte comando
Como esse comando é muito longo, você deve criar o alias usando os seguintes comandos:
Escreva o mesmo comando da seguinte maneira no final.
Agora reinicie o sistema e use
sshConnect
para conectar-se ao seu servidor.fonte
É apenas um problema de permissão com sua chave aws pem.
Apenas altere a permissão da chave pem para 400 usando o comando abaixo.
Se você não tem permissão para alterar a permissão de um arquivo, pode usar o comando sudo like below.
Espero que isso funcione bem.
fonte
Vi duas razões por trás desse problema
1) a chave de acesso não tem a permissão correta. chaves pem com permissão padrão não têm permissão para fazer uma conexão segura. Você apenas precisa alterar a permissão:
chmod 400 xyz.pem
2) Verifique também se você efetuou login com credenciais de usuário adequadas. Caso contrário, use sudo ao conectar
sudo ssh -i {arquivo de chave} ec2-user @ {endereço IP do host remoto}
fonte
Sua chave não deve estar visível publicamente para o SSH funcionar. Use este comando, se necessário:
Exemplo:
fonte
Ignore esta resposta se for irrelevante para você, mas, pela minha experiência, vi pessoas com problemas
Permission denied (publickey)
porque simplesmente colaram sua chave pública (em uma máquina de destino) sem a primeira letra !Isso acontece ao usar o vim para editar (colar) a chave. Como o vim, por padrão, é aberto no modo de comando (não no modo de inserção ), colar a tecla sem alternar para o modo de inserção (ou seja
i
) resultará em pular a primeiras
letra, por exemplo, em vez devocê acaba colando
Portanto, antes de tentar outras soluções, verifique se você colou sua chave corretamente ! ie
Somente se tiver certeza, execute as próximas etapas; tentar ssh em um modo detalhado (ou seja, sinalizador
-v
) pode indicar o problema real:Como uma observação lateral, como já foi mencionado aqui por outras pessoas, na maioria dos casos, iniciar um agente ssh vazio (programa que mantém suas chaves na memória) e adicionar sua chave deve resolver o problema:
fonte
O que corrigiu isso para mim foi mover o arquivo .pem dentro do diretório de aplicativos. Então, digamos que fooapp é o nome do meu aplicativo. Coloquei diretamente lá.
fonte
Às vezes, pode haver um erro na pasta. Eu não sei porque...
Você pode alterar a pasta e tentar novamente. Por exemplo, você pode experimentar nas pastas comuns (área de trabalho, downloads e etc.).
Eu tentei esse método e funcionou
fonte
Este erro ocorre apenas devido à permissão.
Apenas dê a permissão 400
#chmod 400 pemfilepath
fonte