
Tentei usar autenticação de chave pública em meu novo servidor e me deparei com esse problema.
$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 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 '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .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: 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: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
e então tenho que inserir minha senha para fazer login.
Mas, se eu já tiver uma sessão conectada a esse servidor (que está conectada por senha), a conexão a seguir usará a chave de autenticação para evitar a entrada de senha.
Se não houver nenhuma conexão SSH já estabelecida, não consigo conectar sem inserir a senha.
Isso é muito estranho para mim, verifiquei o MD5 /usr/sbin/sshd
entre o novo servidor e o outro servidor normal, é a mesma coisa. Então eu apenas copiei /etc/ssh/sshd_config
do outro servidor normal para o novo servidor e executei o service ssh restart
. O problema ainda existe.
Como devo consertar isso?
Responder1
Verifique se a sua .ssh
pasta e os arquivos dentro dela na máquina cliente podem ser lidos apenas pelo proprietário ( chmod -R 600 .ssh
) e se o proprietário está correto para a pasta e os arquivos (use chown
o comando se necessário).
Verifique também a authorized_keys
pasta e o arquivo no servidor (provavelmente na /root/.ssh
pasta inicial do usuário que está tentando fazer login) para ter certeza de que suas permissões e proprietário estão definidos da mesma maneira.
Editar: com base em mais comentários (e algumas suposições!) - você pode verificar /etc/ssh/sshd_config
se o parâmetro a seguir está definido como abaixo. Caso contrário, tente editá-lo.
AuthorizedKeysFile /home/%u/.ssh/authorized_keys
Observe que isso pressupõe que você não faça login remotamente como root
Responder2
No meu caso, as permissões no diretório inicial eram 775
inferiores 0755
ou inferiores.
O caminho completo para o arquivoauthorized_keys, ou seja, /home/user/.ssh/
deve ser 0755
ou inferior.
Responder3
Corrigi meu próprio caso desse erro removendo id_rsa.pub
de .ssh.
Eu copiei id_rsa
de outra máquina e distribuí por vários clientes fictícios. Portanto, id_rsa
e na verdade eram chaves diferentes que impediam totalmente id_rsa.pub
o uso .id_rsa
Nenhuma mensagem de erro para indicar isso claramente. Eu descobri isso essencialmente por acidente, tentando colocar as diferentes máquinas em um estado idêntico.
Responder4
Depois de muito me preocupar consegui a solução do problema:
O diretório inicial do usuário não deve ter permissão 777
ou ser gravável mundialmente. Se for o caso, a verificação da chave SSH falhará e você terá que colocar uma senha para login.