EC2 - Efetue login em si mesmo sem uma chave ou senha

1

Eu gostaria de poder ssh em meu nó e, em seguida, executar o software para seus próprios propósitos, ssh em outras máquinas e em si. Ele supõe que ssh keys já estão configuradas, portanto, não pode usar o sinalizador -i e usá-lo.

Eu tenho uma configuração de trabalho Xen onde isso funciona bem: tudo o que eu tive que fazer foi scp minha chave privada para .ssh/id_rsa e a parte pública para .ssh/id_rsa.pub (que eu posso recuperar no EC2 pois está em .ssh/authorized_keys ) .

Essa mesma configuração simplesmente não funciona no EC2. Eu verifiquei que /etc/ssh/sshd_config e /etc/ssh/ssh_config são os mesmos na minha caixa Xen que funciona e a caixa EC2 não.

A AMI base que estou usando é ami-1774927e , a imagem do Alestic.com contendo uma nova instalação do Ubuntu Hardy. Naturalmente, a porta 22 está aberta no meu grupo de segurança para ssh de tráfego.

Alguma idéia do que estou fazendo errado?

EDIT: Com base no conselho da womble e aconselha sobre os fóruns do Amazon EC2, aqui estão algumas informações extras que podem ser úteis:

sshd_config e ssh_config são os mesmos nas minhas caixas Xen e EC2 (e são os padrão fornecidos com o Alestic ami especificado anteriormente) e não estou usando nenhuma opção de linha de comando. ssh-agent não está em execução e não há outras chaves ssh na máquina. Estou apenas logando como root, e o mais importante , eu posso logar na minha caixa EC2 da mesma caixa se eu usar -i quando o nome da chave não for id_rsa .

Quando eu uso o sinalizador -i, o final de ssh -v é assim:

debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: ec2scale.key
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Last login: Mon Jul  6 23:42:49 2009 from 127.0.0.1
Linux (none) 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:34:28 EST 2008 x86_64
... and so on ...

Mas quando não uso o sinalizador -i, obtenho isto:

debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /root/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Eu diff 'as chaves e eles são idênticos, e eu posso ver que o servidor aceita minha chave id_rsa acima, mas apenas que a autenticação não passa. Fazer check-out /var/log/auth.log mostra exatamente isso quando eu faço login:

Jul  6 23:46:09 ip-10-244-50-159 sshd[1354]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106)

Qual eu posso usar openssl para ver o código de erro de:

root@ip:~# openssl errstr 0407006A
error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01 

Mas não tenho certeza de como posso usar isso para ajudar no meu problema.

    
por Chris Bunch 04.07.2009 / 01:38

2 respostas

2

Depois de muito trabalho no fórum do Amazon EC2, a "solução" era simplesmente nomear a chave como algo diferente de id_rsa . Como o único outro nome de chave que poderia ser usado automaticamente seria id_dsa , eu nomeei a chave e ela funcionou. Este tópico mostra as etapas realizadas para depurar o problema, que são reproduzidas aqui, no caso de um leitor futuro corre em problemas semelhantes.

  • conteúdo de /etc/ssh/sshd_config
  • conteúdo de /etc/ssh/ssh_config
  • conteúdo de $HOME/.ssh/authorized_keys
  • conteúdo de $HOME/.ssh/config
  • permissões de diretórios e arquivos
  • opções de linha de comando que você está usando (por exemplo, -I e -A )
  • nomes de usuário que você está usando
  • SSH_* de variáveis de ambiente
  • ssh-agent status e quais chaves foram ssh-add 'ed
  • ssh -v -i $HOME/.ssh/id_rsa <REMOTE>
  • ssh -v <REMOTE>
  • strace ssh -v -i $HOME/.ssh/id_rsa <REMOTE>
  • executou sshd com o sinalizador de depuração -d
  • resolvido copiando id_rsa para id_dsa , verifique se não há id_dsa.pub (ou se não funcionará)
por 19.07.2009 / 06:54
1

Bem, sem o conteúdo dos logs de autenticação para ver o que o servidor SSH pensa que está acontecendo e a saída de uma execução detalhada do cliente SSH, a única suposição que posso oferecer é que algo está configurado incorretamente.

EDIT: Então, a menos que eu esteja entendendo mal, você pode logar nas máquinas EC2, exceto quando você não usa a chave correta?

    
por 04.07.2009 / 02:55