Permission denied (publickey) when SSH Access to Amazon EC2 instance [closed]

quero usar a minha instância Amazon ec2, mas enfrentei o seguinte erro:

Permission denied (publickey).

criei o meu par de chaves e baixei .ficheiro pem.

indicado:

chmod  600 pem file.

então, este comando

ssh -i /home/kashif/serverkey.pem  [email protected]

mas tem este erro:

Permission denied (publickey)

Também, Como é que me posso ligar ao filezilla para enviar/transferir ficheiros?

Author: SkyWalker, 2013-08-31

29 answers

Esta mensagem de erro significa que não conseguiu autenticar.

Estas são razões comuns que podem causar isso:

    Estou a tentar ligar-me à chave errada. Tem a certeza que esta instância está a usar este teclado? Estou a tentar ligar-me ao nome de utilizador errado. {[[0]} é o nome de utilizador para a distribuição AWS baseada no ubuntu, mas em alguns outros é {[[1]} (ou admin em alguns Debianos, de acordo com a resposta de Bogdan Kulbida) (também pode ser root, fedora, ver abaixo) A tentar ligar o hospedeiro errado. É o hospedeiro certo a quem está a tentar ligar-se?

Lembre-se que 1. também acontecerá se tiver estragado o ficheiro /home/<username>/.ssh/authorized_keys na sua instância EC2.

Acerca de 2., a informação acerca do nome de utilizador que deve usar Está muitas vezes ausente da descrição da imagem AMI. Mas você pode encontrar alguns na documentação da AWS EC2, ponto de Bala 4. : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

Use o comando ssh para se ligar à instância. Você vai especificar a chave privada (.pem) file and user_ name@public_ dns_name. Para o Amazon Linux, o nome de usuário é ec2-user. Para o RHEL5, o nome de Utilizador é root ou ec2-user. Para Ubuntu, o nome de Utilizador é ubuntu . Para Fedora, o nome de Utilizador é fedora ou ec2-user . Para o SUSE Linux, o o nome do utilizador é root . Caso contrário, se o ec2-Usuário e root não funcionar, verifique com o seu provedor AMI.

Finalmente , esteja ciente de que existem muitas outras razões pelas quais a autenticação iria falhar. O SSH é normalmente bastante explícito sobre o que correu mal se quiser adicionar a opção -v ao seu comando SSH e ler o resultado, como explicado em muitas outras respostas a esta pergunta.

 589
Author: Thibault D., 2015-05-27 06:30:37

Neste caso, o problema surge do Par de chaves perdido. Sobre isto:

  • Não há maneira de mudar o par de chaves numa instância. Você tem que criar uma nova instância que usa um novo par de chaves.
  • pode resolver o problema se a sua instância for utilizada por uma aplicação em Pé De Feijão elástico.

Pode seguir estes passos:

  1. Acesso à Consola de gestão da AWS
  2. Abrir Pé De Feijão Elástico Tab
  3. Seleccione a sua aplicação de Todas as aplicações Tab
  4. do lado esquerdo menù select Configuração
  5. Clique nas instâncias Engrenagens
  6. em servidor formulário verifique o par de Chaves EC2 e seleccione o seu novo par de chaves. Você pode ter que atualizar a lista para ver um novo par de chaves que você acabou de criar.
  7. gravar
  8. o pé de feijão elástico irá criar para si novas instâncias associadas à nova chave par.

Em geral, lembre-se que tem de permitir que a sua instância EC2 aceite o tráfego SSH de entrada. Para fazer isso, você tem que criar uma regra específica para o grupo de segurança de sua instância EC2. Pode seguir estes passos.
  1. Acesso à Consola de gestão da AWS
  2. Abrir Tab
  3. deinstâncias lista seleccione a instância em que está interessado
  4. na página de Descrição chek o nome da O Grupo de segurança {[6] } a sua instância está a usar.
  5. de novo na página de Descrição carregue em ver as regras e verifique se o seu grupo de segurança tem uma regra para o tráfego SSH de entrada no porto 22
  6. Caso contrário, em Network & Security menù select Security Group
  7. Seleccione o Grupo de segurança usado pela sua instância e o botão Página de entrada
  8. À esquerda da Página de entrada pode compor uma regra para a SSH de entrada. trafego:
  • crie uma nova regra : SSH
  • Fonte: endereço IP ou sub-rede da qual deseja aceder à instância
  • Nota : Se quiser conceder acesso ilimitado à sua instância, pode especificar 0.0.0.0/0, embora a Amazon não recomende esta prática
  • Carregue em Adicione a Regra e depois Aplique as suas alterações
  • Verifique se é agora capaz de se ligar ao seu instância via SSH.
  • Espero que isto possa ajudar alguém como me ajudou.
     48
    Author: Matteo Ceserani, 2014-03-12 15:23:56
    Foi assim que resolvi o problema.
    ssh -i <key> ec2-user@<ec2 ip>
    
     43
    Author: Deepti Kohli, 2013-12-23 01:49:03
    Resolvi o problema só de colocar sudo antes de
    sudo ssh -i mykey.pem myec2.amazonaws.com
    
    Mas a solução adequada é mudar a propriedade primeiro, e então conectar-se como um usuário normal, como Janus Troelsen disse abaixo. No meu caso seria:
    chown wellington:wellington key.pem
    
     26
    Author: Wellington Lorindo, 2015-10-02 12:53:45

    Tenta usar

    sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>
    

    Ou

    sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>
    
     23
    Author: Abhishek Gupta, 2014-06-30 13:43:51

    Outra Possível causa deste erro:

    Quando a pasta pessoal do utilizador é gravável em grupo , o utilizador não pode autenticar-se.

    (reproduzido em Ubuntu instance.)

     22
    Author: Stepan, 2015-07-02 12:17:37

    Para a instância micro ubuntu 12.04 lts tive de definir o nome de utilizador como Opção

    ssh -i pemfile.pem -l ubuntu dns
    
     7
    Author: dc10, 2014-03-10 20:51:30

    Tem de fazer os seguintes passos:

    1. abra o seu cliente ssh ou terminal se estiver a utilizar o Linux.
    2. localize o seu ficheiro de chave privada e mude o seu directório.
      cd <path to your .pem file>
    3. executar abaixo dos comandos:
      chmod 400 <filename>.pem
      ssh -i <filename>.pem ubuntu@<ipaddress.com>

    SE ubuntu O Utilizador não estiver a trabalhar, então tente com ec2-user.

     7
    Author: Rabinarayan Panigrahi, 2017-03-11 11:03:50
    Lutei com a mesma permissão negada por erro, aparentemente devido a ...
    key_parse_private2: missing begin marker 
    

    Na minha situação, a causa era o ficheiro de configuração ssh do utilizador actual (~/.ssh / config).

    Usando o seguinte:

    ssh -i ~/myKey.pem ec2-user@<IP address> -v 'exit'
    

    A saída inicial mostrou:

    debug1: Reading configuration data /home/ec2-user/.ssh/config
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 56: Applying options for *
    debug1: Hostname has changed; re-reading configuration
    debug1: Reading configuration data /home/ec2-user/.ssh/config
    debug1: Reading configuration data /etc/ssh/ssh_config
    

    ... muitas linhas de depuração foram cortadas aqui ...

    debug1: Next authentication method: publickey
    debug1: Trying private key: /home/ec2-user/somekey.pem
    debug1: key_parse_private2: missing begin marker
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    

    A terceira linha acima é onde o problema real foi identificado; no entanto, eu olhei para a mensagem de depuração quatro linhas a partir do fundo (acima) e foi enganado. La não é um problema com a chave, mas eu testei - a e comparei outras configurações.

    O Meu ficheiro de configuração SSH do utilizador reiniciou a máquina através de uma configuração global não intencional, como se mostra em baixo. A primeira linha de Host não deveria ter sido um comentário.

    $ cat config
    StrictHostKeyChecking=no
    #Host myAlias
            user ec2-user
            Hostname bitbucket.org
    #        IdentityFile ~/.ssh/somekey
    #        IdentitiesOnly yes
    
    Host my2ndAlias
            user myOtherUser
            Hostname bitbucket.org
            IdentityFile ~/.ssh/my2ndKey
            IdentitiesOnly yes
    
    Espero que alguém ache isto útil.
     5
    Author: Ben Paz, 2015-06-19 16:33:58

    Esqueci-me de adicionar o nome de utilizador (ubuntu) ao ligar a minha instância Ubuntu. Então eu tentei isto:

    ssh -i /path/my-key-pair.pem my-ec2-instance.amazonaws.com
    

    E a maneira correcta era

    ssh -i /path/my-key-pair.pem [email protected]
    
     4
    Author: JohnP, 2016-03-31 08:42:26
    Isto já me aconteceu várias vezes. Eu usei Amazon Linux AMI 2013.09.2 e Ubuntu Server 12.04.3 LTS que estão ambos na lista livre. Sempre que lancei uma instância, tenho permissão negada para aparecer. Eu não verifiquei isso, mas minha teoria é que o servidor não está completamente configurado antes de eu tentar ssh nele. Depois de algumas tentativas com permissão negada, eu espero alguns minutos e então eu sou capaz de conectar. Se você está tendo este problema eu sugiro esperar cinco minutos e a tentar outra vez.
     3
    Author: Wade Anderson, 2014-01-14 15:42:06
    Aqui está um possível cenário frustrante que produz este erro:

    Se você está almoçando uma nova instância de um AMI que você criou de outra instância( diga instância xyz), então a nova instância só aceitará a mesma chave que instância a usada. Isto é totalmente compreensível, mas fica confuso porque durante o processo passo a passo de criar a nova instância, você é convidado a selecionar ou criar uma chave (no último passo) que não vai funcionar.

    A chave que você criar ou selecionar, só a chave que você estava usando, por exemplo, XYZ será aceita pela nova instância.

     2
    Author: Seeker, 2014-03-17 01:51:52
    Também lutei com isto durante algum tempo até encontrar o seguinte:
    eb ssh
    
    Quando você usa isso do diretório do projeto, bingo-bango sem confusão, Você está em
     2
    Author: JedA, 2015-04-22 14:06:06

    No meu próprio caso, fiz o seguinte:

    chmod 400 <key.pem>
    
    ssh -i <key.pem> ec2-user@ec2_public_dns (for debian)
    

    Estava inicialmente a usar a parte root@ e recebi esta mensagem:

    Please login as the user "ec2-user" rather than the user "root".
    
     2
    Author: AJNinja, 2015-08-18 20:59:29
    Estou nas janelas com ... WinSCP. Ele funciona muito bem no File Explorer e PuTTY SSH Shell para acessar o meu Amazon EC2-VPC Linux. Não há nada a fazer com chmod pem file como ele usa myfile.ppk convertido por PuTTYgen do pem arquivo.
     2
    Author: Chetabahana, 2017-05-23 12:34:45
    Aconteceu-me o mesmo, mas tudo o que aconteceu foi que a chave privada se perdeu do porta-chaves da minha máquina local.

    Ssh-add-K

    Adicionou novamente a chave, depois o comando ssh para ligar voltou ao trabalho.

     2
    Author: eiTan LaVi, 2017-11-11 21:33:41

    Este problema pode ser resolvido se se autenticar no campo Ubuntu usando o comando abaixo:

    ssh -i ec2key.pem ubuntu@ec2-public-IP
    
     1
    Author: Prajith, 2015-05-11 14:08:15

    Eu tive duas vezes teclas e linha de comando ssh corretas (eu sei porque eu estou duplicando uma instância Ubuntu 14.04 funcionando), mas apenas não foi capaz de ssh em uma nova instância, mesmo depois de esperar 5 minutos como sugerido por Wade Anderson acima.

    Tive de destruir e recriar a máquina. Isto aconteceu em duas ocasiões distintas. Como não posso entrar inicialmente, não vejo o que se passa. Então, se tens este problema, tenta isso.
     1
    Author: Greg Bell, 2015-11-01 23:18:40

    Você deve verificar estas poucas coisas:

    1. certifique-se que o seu endereço IP está correcto
    2. Certifique-se que está a usar a chave correcta
    3. Certifique-se que está a usar o nome de Utilizador correcto, pode tentar: 3.1. administrador 3.2. EC2-utilizador 3.3. ubuntu
    Tive o mesmo problema e resolveu-se depois de mudar o nome de utilizador para ubuntu. Na documentação AWS foi mencionado ao usuário ec2-user, mas de alguma forma não funciona para mim.
     1
    Author: Mehran, 2016-10-01 14:19:26

    A minha chave privada estava programada para permitir {[[0]} e estava a resultar em permissão negada para a ajustar para ' 644 ' ajudou-me .

    Key_ Load_ Private_type: Permissão negada é o erro específico que estava a obter

    Solução: Sudo chmod 644 <key.pem>

    Nota: a 644 is must, it was not working with 400

     1
    Author: Kuldeep Dangi, 2016-10-26 09:16:17

    Quando se tenta fazer

    ssh -i <.pem path> root@ec2-public-dns

    Você recebe uma mensagem aconselhando-o a usar o ec2-user.

    Please login as the user "ec2-user" rather than the user "root".

    Por isso, utilize

    ssh -i <.pem path> ec2-user@ec2-public-dns

     1
    Author: Jerome Anthony, 2017-04-06 02:52:35
    Tive o mesmo problema e é muito estranho. Se acreditas que estás a fazer tudo bem, segue isto.: Algumas vezes há confusão sobre o Usuário para a instância EC2!! Algumas vezes você recebe ec2-user, ubuntu, centos etc. Então verifica o teu nome de utilizador para o machie!!

    Autenticar-se com o utilizador raiz ssh -i yourkey.pem (400 permission) root@<ip> irá lançar um erro e dar-lhe-á o nome de utilizador disponível. então faça login com esse usuário.

     1
    Author: Manoj Sahu, 2017-05-03 11:24:49

    É uma coisa básica, mas sempre confirme que usuário você está tentando fazer o login. O meu caso era só uma distracção. Eu estava a tentar usar umroot utilizador:

    ssh -i ~/keys/<key_name> [email protected]
    

    Mas foi outro utilizador:

    ssh -i ~/keys/<key_name> [email protected]
    
     1
    Author: Andre Araujo, 2017-06-08 14:35:57
    Tive o mesmo erro, mas uma situação diferente. para mim aconteceu do nada depois de muito tempo eu poderia ssh com sucesso para o meu computador remoto lá fora. depois de um monte de procurar a solução para o meu problema foram as permissões de arquivos. é estranho, Claro, porque eu não mudei quaisquer permissões no meu computador ou o remoto que pertence aos arquivos/diretórios do ssh. então, do Bom ArchLinux wiki Aqui está:

    Para a máquina local faça isto:

    $ chmod 700 ~/
    $ chmod 700 ~/.ssh
    $ chmod 600 ~/.ssh/id_ecdsa
    

    Para a máquina remota faz isso.

    $ chmod 700 ~/
    $ chmod 700 ~/.ssh
    $ chmod 600 ~/.ssh/authorized_keys
    
    Depois disso, o meu ssh começou a trabalhar novamente sem a permissão negada.
     1
    Author: Elimelech, 2017-12-26 21:52:29

    Outra questão possível: ID de autenticação errada

    Verifique "Instruções De Utilização"

    Todas as boas sugestões acima, mas o que encontrei foi que escolhi uma instância pré-feita. Após o início da instância , olhe para as instruções de uso. Eu usei incorretamente o ID de login da chave privada quando nas instruções eu era suposto usar 'bitnami' (por exemplo, bitnami@domain-i key.pem)
     0
    Author: Mike Q, 2018-01-27 21:41:06

    Tive um erro semelhante

    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: xxxx.pem
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

    O meu problema era que a instância não começou correctamente devido a um erro no script run-on-start-up de Step 3: Configure instance detail under Advanced details:

    No que pensei ter entrado:

    #include
 https://xxxx/bootstrap.sh


    O que realmente entrou quebra a configuração da instância

    #include

    https://xxxx/bootstrap.sh

    Então a chave pública do lado da instância não foi criada.
     0
    Author: RNA, 2018-04-05 08:48:24
    É sensível a maiúsculas.

    Errado: SSH EC2-utilizador @XXX. XX. XX. XX-i MyEC2KeyPair.pem

    Correcto: SSH EC2-utilizador @XXX. XX. XX. XX-i MyEC2KeyPair.pem

     0
    Author: Tanmay, 2018-04-25 00:38:19

    Eu era capaz de SSH de uma máquina, mas não de outra. Parece que estava a usar a chave privada errada.

    A forma como descobri isto foi obtendo a chave pública da minha chave privada, assim:

    ssh-keygen -y -f ./myprivatekey.pem

    O que saiu não corresponde ao que estava ~/.ssh/authorized_keys na instância EC2.

     -1
    Author: Petko M, 2017-08-09 20:12:03
    Todas as respostas acima classificadas são precisas e devem funcionar para a maioria dos casos. No caso de não serem como no meu caso, simplesmente livrei-me do meu ficheiro na máquina da qual estava a tentar fugir e isso resolveu-me o problema. Consegui ligar-me depois.
     -1
    Author: pbegle, 2018-04-02 20:21:57