Eu tenho um servidor Ubuntu no Amazon EC2, que uso para desenvolvimento, e hoje estupidamente limpei tudo do meu ~/.ssh/authorized_keys
arquivo. Felizmente, tenho um SSH aberto, por isso ainda estou conectado e posso corrigir o arquivo, mas quando tento colocar meu arquivo-chave de volta, ele não funciona. Ainda recebo a permissão negada do servidor na minha máquina local.
authorized_keys
tem as permissões 600. Tentei anexar minha chave SSH com o ssh-rsa e deixar o ssh-rsa desativado. Também tentei criar a chave SSH em uma única linha, mas isso também não funcionou.
Há algo mais que eu tenho que fazer, como recarregar o arquivo de alguma forma?
data-recovery
ssh
amazon-ec2
Dave Long
fonte
fonte
Respostas:
Você nunca deve salvar o arquivo com seu conteúdo começando
-----BEGIN RSA PRIVATE KEY-----
no servidor, que é sua chave privada . Em vez disso, você deve colocar a chave pública no~/.ssh/authorized_keys
arquivo.Essa chave pública possui a
.pub
extensão quando gerada usandossh-keygen
e seu conteúdo começa comssh-rsa AAAAB3
. (O formato binário é descrito nas respostas a esta pergunta ).As permissões de
~/.ssh
no servidor devem ser 700. O arquivo~/.ssh/authorized_keys
(no servidor) deve ter um modo 600. As permissões da chave (privada) no lado do cliente devem ser 600.Se a chave privada não foi protegida por uma senha e você a colocou no servidor, recomendo que você gere uma nova:
Você pode pular isso se tiver certeza absoluta de que ninguém pode recuperar a chave privada excluída do servidor.
Se isso não ajudar, execute as
ssh
opções para obter mais detalhes:No lado do servidor, você pode revisar
/var/log/auth.log
para obter detalhes.fonte
ssh-keygen -t rsa
e colocar oid_rsa.pub
arquivo recém-criado~/.ssh/authorized_keys
no seu servidor. Consulte também docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…ssh-keygen -y -f key.pem > key.pub
Uma maneira alternativa de instalar sua chave pública na máquina remota
authorized_keys
:Algumas vantagens:
não requer
ssh-copy-id
instalação.garantias que
mkdir
funciona antes de tentar anexarid_rsa.pub
aauthorized_keys
.fonte
mkdir -p ~/.ssh
parte da resposta dada por @MariusButucumask 077 && mkdir -p ~/.ssh
é tudo o que você precisa fazer para garantir que funcione corretamente.Se você tiver autenticação baseada em login, use
ssh-copy-id
para anexar suas chaves públicas ao servidor remoto.fonte
brew install ssh-copy-id
sudo port install openssh +ssh_copy_id
. A+ssh_copy_id
instalação do openssh com a variante ssh_copy_id.fonte
A maneira mais fácil é copiar e colar ...
Primeiro visualize / copie o conteúdo da sua chave pública local,
id_rsa.pub
incluindo o início "ssh-rsa" até terminar com o seu endereço de email:Em seguida, edite
authorized_keys
no servidor e cole o conteúdo da sua área de transferência abaixo de qualquer outra chave nesse arquivo:E salve
Ctl+O
, saia do arquivoCtl+X
, saia da sessão SSHexit
e tente fazer login novamente para confirmar que funcionou. Se não pedisse uma senha, funcionava.fonte
Pensei em contribuir com isso, já que se trata especificamente de instâncias da AWS e todas as respostas tratam o problema apenas como um problema do Linux, como se fosse um pedaço de hardware. A primeira coisa que você precisa entender é que nunca deve nunca tratar as instâncias do EC2 como hardware. Isso apenas criará mais trabalho para você. Trate-os como voláteis. Esse é o maior obstáculo que vejo pessoas enfrentando com a AWS. Faça uma AMI da sua instância e injete a chave necessária na nova instância. O cloud-init cuidará disso para você. Mais detalhadamente, tudo o que você precisa fazer é usar a chave pública correta ao criar a nova instância a partir da AMI do original. Se, como nos comentários da resposta aprovada, você deseja gerar seu próprio par de chaves de arquivos pub e pem, a AWS fornece a opção de fazer upload de suas chaves públicas para uso no EC2.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws
fonte
Depois de salvar a chave pública, você deve salvar a chave privada em um diretório e arquivo no seu PC. E na seção auth do ssh on putty, você deve apontar para o arquivo de chave privada que você salvou na área de trabalho. Vai funcionar. Funciona para mim.
fonte
Obtenha um shell na máquina remota em que deseja colocar a chave e, em seguida, você pode executar esse procedimento para criar os arquivos e diretórios necessários, definir suas permissões e anexar a chave ao arquivo. Claro que você precisa alterar a
KEYGOESHERE
parte abaixo e o comentário depois.fonte
Aqui está uma variação na qual você pode ter uma lista de nomes de arquivos de chave pública em um arquivo de texto e o grande lote de arquivos de chave pública também está no mesmo diretório.
Essa variação pode ser útil se você estivesse fornecendo uma lista enorme de arquivos de chave pública para importar :-)
fonte