Por que minha autenticação de chave pública ssh funciona somente com conexão autenticada por senha simultânea?

2

Eu apenas configurei um sistema lucid ubuntu (10.04) com o openssh-server. Estou tentando configurar a autenticação de chave pública e ela só funciona se eu me conectar pela primeira vez usando a autenticação por senha e deixar essa sessão aberta. Todas as novas sessões simultâneas funcionarão com publickey.

Tomei todas as medidas para garantir que as permissões corretas estejam em vigor no meu diretório inicial do lado do servidor.

chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Minha chave pública RSA 2048 bit do lado do cliente é anexada (apenas uma linha) aos arquivos authorized_keys. Minhas chaves RSA têm senhas em branco também.

Estou confuso sobre o que pode causar isso. Eu sei que tem que ser algo com a configuração do meu servidor. Ouvi dizer que, se a configuração não for segura "o suficiente", ela não permitirá a autenticação de chave pública, mas estou confuso quanto ao que poderia ser.

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile    %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

O restante é o padrão. PublicKey funciona, mas não para a primeira sessão.

Obrigado antecipadamente!

    
por Nathan 17.08.2010 / 05:17

4 respostas

3

Se você tiver um diretório pessoal criptografado, como o Ubuntu faz com o EcryptFS, isso explicaria o que você está experimentando. Seu primeiro ~ / .ssh / authorized_keys ficará disponível após você ter feito seu primeiro login com senha.

Uma maneira de permitir o login direto por chaves ssh é específica AuthorizedKeysFile fora do diretório inicial. Isso pode ser feito usando% u (usuário) em vez de% h (diretório inicial) no caminho. Outra opção é colocar uma cópia de ~ / .ssh / authorized_keys na sua versão "desmontada" do seu diretório pessoal. Isso é o que estabelece sob a montagem EcryptFS.

No entanto, não tenho certeza do quanto de bom essas soluções realmente farão a você. Você ainda precisará fazer login usando sua senha para poder acessar seu diretório pessoal normal. É a sua senha de usuário que é usada para desembrulhar a senha necessária para montar / descriptografar seu diretório pessoal do EcryptFS. Sim, você ainda pode montar / descriptografar manualmente, mas isso quase parece uma questão diferente.

    
por 18.08.2010 / 19:21
1

Meu palpite é que ele funciona quando você está logado com a autenticação de senha, porque no lado do cliente você configurou o ControlMaster / ControlPath que permite a reutilização da conexão para as conexões subseqüentes.

Tente aumentar o nível de log no lado do servidor definindo o LogLevel como DEBUG3 e cavando os logs (/var/log/auth.log) para ver o que está acontecendo.

No lado do cliente, adicione -vvv à linha de comando ssh para ver quais chaves seu cliente está usando.

Com os dois infos, você deve ser capaz de descobrir o que está acontecendo.

    
por 17.08.2010 / 11:28
0

Seu arquivo authorized_keys precisa estar na pasta .ssh e deve ter 644 permissões.

    
por 17.08.2010 / 10:42
0

cp ~ / .ssh / authorized_keys / etc / authorized_keys

e altere o / etc / ssh / sshd_config

AuthorizedKeysFile / etc / authorized_keys

e recarregue o sshd /etc/init.d/ssh restart

    
por 28.10.2010 / 16:03