Autenticação de chave SSH procurando no lugar errado?

2

Sou relativamente novo no mundo Linux e estou configurando um servidor Ubuntu 16.04.

Eu consegui gerar chaves usando ssh-keygen e salvei a chave em /home/ther4nd0moo/.ssh/id_rsa

Eu usei ssh-copy-id ther4nd0moo@my_ip e certifiquei-me de que o arquivo authorized_keys estivesse no lugar certo.

Quando eu uso ssh -v ther4nd0moo@my_ip em um computador diferente, algumas coisas estranhas aparecem (para mim, pelo menos)

OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 10.0.0.189 [10.0.0.189] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 10.0.0.189:22 as 'need206'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:YzQwUoOherHwxOOhzEhue7ecx+OMi0FpmIcSONi8X1o
debug1: Host '10.0.0.189' is known and matches the ECDSA host key.
debug1: Found key in /home/edgar/.ssh/known_hosts:3
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/edgar/.ssh/id_rsa
debug1: Trying private key: /home/edgar/.ssh/id_dsa
debug1: Trying private key: /home/edgar/.ssh/id_ecdsa
debug1: Trying private key: /home/edgar/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

O que está me incomodando é como ele está procurando o arquivo de identidade e a chave privada em /home/edgar/ (o nome do edgar que eu coloquei ao instalar o servidor). Em uma tentativa de resolver isso, copiei o conteúdo da chave de /home/ther4nd0mmoo/.ssh e criei a pasta /home/edgar/.ssh , o que provavelmente é o motivo pelo qual ela tem a mensagem Found key in /home/edgar/.ssh/known_hosts:3 , mas ainda não consigo acessar o servidor.

Eu tentei ssh -i /home/ther4nd0moo/.ssh/id_rsa ther4nd0moo@my_ip e meu terminal diz que é not accessible: No such file or directory

Estou fazendo algo errado?

    
por ther4nd0moo 31.03.2017 / 08:16

1 resposta

3

As chaves SSH funcionam com uma chave privada em sua máquina local e uma chave pública correspondente na máquina remota.

Então - quando você rodou o ssh-keygen, você criou 2 chaves: a privada ( ~/.ssh/id_rsa ) e a pública ( ~/.ssh/id_rsa.pub ).

Você precisa copiar o conteúdo do arquivo de chave do Pubic ( ~/.ssh/id_rsa.pub ) da sua máquina local para o arquivo ~/.ssh/authorizedkeys na máquina remota. Basta adicioná-lo a uma nova linha.

Se você estiver efetuando login na sua máquina remota a partir de uma máquina local DIFERENTE, precisará copiar o arquivo id_rsa da máquina original para a 2ª máquina local ou (melhor) criar outro par de chaves privada / pública para a segunda máquina local e copie a chave pública da segunda máquina para o servidor remoto.

O servidor remoto pode ter qualquer número de chaves públicas em ~/.ssh/authorizedkeys , e é uma boa prática (acredito) ter um par de chaves diferente para cada uma das suas máquinas locais.

Se você precisar do ssh da máquina REMOTE para outra máquina (digamos que você tenha que voltar da máquina remota para o seu laptop), então você configuraria a máquina REMOTE com seu próprio par de chaves privado / público, e copie a chave pública da máquina remota para o arquivo ~/.ssh/authorizedkeys do laptop.

Pense nisso assim: Cada máquina pode ter uma chave de porta (a chave privada) e qualquer outra máquina tem um buraco de fechadura (o arquivo de chaves autorizadas) - se outra máquina tiver uma configuração de buraco de fechadura na qual sua chave se encaixa, você poderá obter acesso. Para trabalhar na direção inversa, você precisa configurar outra chave e configurações de buraco da fechadura. (provavelmente não muito bem explicado - mas espero que ajude!).

O comando ssh-copy-id é basicamente apenas um atalho para salvar manualmente.

Eu pessoalmente prefiro copiar a chave pública manualmente só porque gosto de fazer as coisas da maneira mais difícil. ;)

    
por JamesBB 31.03.2017 / 09:54