Eu tenho dois laptops (Host A e Host C) com endereços IP dinâmicos e um desktop (Host B), todos executando Linux (Ubuntu). No momento, tenho tudo configurado para poder acessar o Host A do Host C da seguinte maneira. Eu tenho um túnel ssh de A a C com o comando no hostA do formulário
autossh -NR 10023:localhost:22 [email protected]
Estou usando um emparelhamento de chaves para que o comando autossh possa realmente acontecer.
Então posso fazer ssh em B a partir de C e depois conectar-me a a com
ssh -p 10023 localhost
solicita uma senha e eu posso entrar. Sem problemas.
No entanto, gostaria de melhorar a segurança em A, portanto, é necessária uma chave para o login. Então eu ssh-keygen um par de chaves no HostB e nomeio minha chave customkey_rsa e forneço a ela uma senha. Então customkey_rsa.pub é a chave pública. Não consigo fazer com que o ssh-copy-id funcione com este túnel, então apenas faço login em A a partir de C e scp no customkey_rsa.pub do Host B. Em seguida, anexo a chave com
cd .ssh & cat customkey_rsa.pub >> authorized_keys
Agora, porém, quando tento fazer login, ainda recebo a solicitação de senha. Parece, na verdade, que chega a tentar a chave, mas de alguma forma desiste no último segundo, conforme abaixo
de B
ssh -v -i customkey_rsa -p 10023 localhost
dá
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Connecting to localhost [127.0.0.1] port 10023.
debug1: Connection established.
debug1: identity file customkey_rsa type 1
debug1: identity file customkey_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH_6.6.1* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA (redacted)
debug1: Host '[localhost]:10023' is known and matches the ECDSA host key.
debug1: Found key in /home/ohnoplus/.ssh/known_hosts:2
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,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: customkey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
ohnoplus@localhost's password:
Observe que as permissões para ~/.ssh
no Host A são 700
e para .ssh/authorized_keys
são 600
.
Então, minha pergunta. Por que isso não funcionou e como posso consertar?
Coisas que observei que não ajudaram:
Trabalhei na lista de sugestões. As permissões estão definidas corretamente em meu sistema e as outras soluções não se aplicam. Por que ainda estou recebendo uma solicitação de senha com ssh com autenticação de chave pública?
Semelhante, mas nenhuma solução fornecida: ssh com chave rsa pede senha
Não tenho um arquivo "authorized_keys2" ssh solicita senha apesar de .ssh/authorized_keys
Responder1
Você precisa adicionar:
PasswordAuthentication no
para o seu sshd_config (essa é a configuração do servidor)