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?
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.
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:
- Acesso à Consola de gestão da AWS
- Abrir Pé De Feijão Elástico Tab
- Seleccione a sua aplicação de Todas as aplicações Tab
- do lado esquerdo menù select Configuração
- Clique nas instâncias Engrenagens
- 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.
- gravar
- 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.
- Acesso à Consola de gestão da AWS
- Abrir Tab
- deinstâncias lista seleccione a instância em que está interessado
- na página de Descrição chek o nome da O Grupo de segurança {[6] } a sua instância está a usar.
- 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
- Caso contrário, em Network & Security menù select Security Group
- Seleccione o Grupo de segurança usado pela sua instância e o botão Página de entrada À 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
ssh -i <key> ec2-user@<ec2 ip>
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
Tenta usar
sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>
Ou
sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>
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.)
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
Tem de fazer os seguintes passos:
- abra o seu cliente ssh ou terminal se estiver a utilizar o Linux.
- localize o seu ficheiro de chave privada e mude o seu directório.
cd <path to your .pem file>
- 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
.
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.
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]
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.
eb ssh
Quando você usa isso do diretório do projeto, bingo-bango sem confusão, Você está em
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".
chmod pem file
como ele usa myfile.ppk
convertido por PuTTYgen do pem arquivo.
Ssh-add-K
Adicionou novamente a chave, depois o comando ssh para ligar voltou ao trabalho.
Este problema pode ser resolvido se se autenticar no campo Ubuntu usando o comando abaixo:
ssh -i ec2key.pem ubuntu@ec2-public-IP
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.Você deve verificar estas poucas coisas:
- certifique-se que o seu endereço IP está correcto
- Certifique-se que está a usar a chave correcta
- Certifique-se que está a usar o nome de Utilizador correcto, pode tentar: 3.1. administrador 3.2. EC2-utilizador 3.3. ubuntu
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
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
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.
É 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]
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.
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)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
Errado: SSH EC2-utilizador @XXX. XX. XX. XX-i MyEC2KeyPair.pem
Correcto: SSH EC2-utilizador @XXX. XX. XX. XX-i MyEC2KeyPair.pem
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.