Por que recebo uma permissão ssh negada (publickey)?

1

Eu tenho duas máquinas no mecanismo de computação do Google e quero ssh no outro servidor. Portanto, na primeira máquina (namenode), criei uma chave ssh sem senha para o usuário hadoop e fiz um cat id_rsa.pub > > authorized_keys. Na segunda máquina (datanode1) existe também um usuário chamado hadoop. O usuário hadoop da segunda máquina possui um diretório ~ / .ssh vazio.

Quando eu agora tento o ssh da primeira para a segunda máquina, recebo:

hadoop@namenode:~/.ssh$ ssh -v hadoop@datanode1
OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to datanode1 [10.240.223.55] port 22.
debug1: Connection established.
debug1: identity file /home/hadoop/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/hadoop/.ssh/id_rsa-cert type -1
debug1: identity file /home/hadoop/.ssh/id_dsa type -1
debug1: identity file /home/hadoop/.ssh/id_dsa-cert type -1
debug1: identity file /home/hadoop/.ssh/id_ecdsa type -1
debug1: identity file /home/hadoop/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4
debug1: match: OpenSSH_6.0p1 Debian-4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 10:54:3e:ec:07:58:48:85:28:40:90:43:e1:8f:3d:f0
debug1: Host 'datanode1' is known and matches the ECDSA host key.
debug1: Found key in /home/hadoop/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/hadoop/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/hadoop/.ssh/id_dsa
debug1: Trying private key: /home/hadoop/.ssh/id_ecdsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Eu não entendo o que está acontecendo aqui.

UPDATE: Eu copiei o id_rsa.pub para o arquivo authorized_keys no servidor de destino. No entanto, agora recebo o seguinte erro:

hadoop@namenode:~/.ssh$ ssh datanode1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for datanode1 has changed,
and the key for the corresponding IP address 10.240.226.88
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
9f:8d:07:09:a9:67:63:b4:b9:2b:f5:39:ed:ef:55:d6.
Please contact your system administrator.
Add correct host key in /home/hadoop/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/hadoop/.ssh/known_hosts:1
ECDSA host key for datanode1 has changed and you have requested strict checking.
Host key verification failed.

Adicionando "StrictHostKeyChecking = no" ao / etc / ssh / ssh_config reparou este problema.

    
por toom 31.01.2014 / 00:07

2 respostas

4

Sua chave pública SSH precisa ser copiada para o servidor destino , não a origem.

  • Crie sua chave SSH no servidor que você conectará de
  • Cat o arquivo ~/.ssh/id_rsa.pub que você acabou de criar
  • Copie essa chave para o arquivo ~/.ssh/authorized_keys no servidor que você conectará para
  • Verifique se as permissões em ~/.ssh/authorized_keys estão definidas para 0600
  • Você também pode usar o aplicativo de ajuda ssh-copy-id dependendo do seu sistema operacional (não tenho experiência direta com o Google Compute, portanto, isso pode não funcionar para você).

Uma boa maneira (pelo menos para mim) de lembrar como funciona a autenticação por chave SSH é esta:

  • O computador do qual você está se conectando lê a chave privada (por exemplo, ~/.ssh/id_rsa ) e gera a chave pública para encaminhar para a máquina receptora.
  • O arquivo-chave (por exemplo, ~/.ssh/id_rsa.pub ) gerado ao criar a chave é apenas para informação e pode ser recriado / calculado se você tiver a chave privada .
  • Por causa disso, sua chave privada nunca deve ser compartilhada.
  • O arquivo ~/.ssh/authorized_keys é uma "lista branca" de tipos. Ele lista todas as assinaturas de chave pública que podem se conectar à conta do usuário.
por 31.01.2014 / 00:27
3

Sugiro que você atualize a impressão digital do host em /home/hadoop/.ssh/known_hosts (ou exclua a linha e confirme novamente o host ao fazer login novamente) e não desative o StrictHostKeyChecking .

(assumindo que o seu servidor não muda o IP mantendo o DNS)

    
por 31.01.2014 / 01:19