Este é apenas um palpite, mas até onde eu sei, o Ubuntu criptografa as pastas base do usuário por padrão. Quando você não está logado, ~ / .ssh / authorized_keys não será legível por sshd na máquina host e, portanto, sua autenticação pubkey falhará.
Eu instalei recentemente o mais recente Ubuntu 12.04 64bit alpha (2?) em uma máquina virtual VMware, a fim de verificar as coisas.
Uma coisa estranha que eu encontrei é que eu só consigo ssh com sucesso na máquina se eu estiver logado no console. Se eu sair do console, receberei uma permissão negada.
Isso é muito desconcertante, então espero que alguém tenha visto isso.
O seguinte é o resultado.
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/foo/.ssh/config
debug1: Applying options for b06
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/foo/.ssh/mux/ssh_mux_foo" does not exist
debug1: Connecting to foo [xx.xx.xx.xx] port 22.
debug1: Connection established.
debug1: identity file /Users/foo/.ssh/id_rsa-4096 type 1
debug1: identity file /Users/foo/.ssh/id_rsa-4096-cert type -1
debug1: identity file /Users/foo/.ssh/id_rsa type 1
debug1: identity file /Users/foo/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-2ubuntu2
debug1: match: OpenSSH_5.9p1 Debian-2ubuntu2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
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: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '[foo]:22' is known and matches the RSA host key.
debug1: Found key in /Users/foo/.ssh/known_hosts:1
Host key fingerprint is
debug1: ssh_rsa_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: /Users/foo/.ssh/id_rsa-4096
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: /Users/foo/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
Este é apenas um palpite, mas até onde eu sei, o Ubuntu criptografa as pastas base do usuário por padrão. Quando você não está logado, ~ / .ssh / authorized_keys não será legível por sshd na máquina host e, portanto, sua autenticação pubkey falhará.
Pelo que diz, posso pensar em uma coisa:
Eu não sei por que eles mudariam isso na nova versão do Ubuntu. O arquivo de configuração do ssh deve estar em / etc / sshd_config
Espero que isso ajude, ou pelo menos coloque uma ideia melhor na mente de alguém.
Então, depois de cavar um pouco mais, eu tenho uma solução para o meu problema. Esqueci de mencionar que meu diretório pessoal está criptografado, então, depois de pensar mais sobre isso, faz sentido que as coisas não funcionem.
Aqui está a correção:
Isso realmente é uma espécie de dor na bunda, mas vejo por que isso foi feito dessa maneira. Estou aberto a sugestões que me negam ter que digitar a senha em "ecryptfs-mount-private". Mas isso é o melhor que eu tenho agora.
Tags ssh openssh sshd ubuntu ubuntu-12.04