Como desbloquear conta para autorização de chave pública ssh, mas não para autorização de senha?

21

O ssh não permite que eu faça login, porque a conta está bloqueada. Desejo desbloquear o usuário no meu servidor para autorização de chave pública sobre o ssh, mas não habilite o login com senha.

Eu tentei:

# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.

Entradas de registro de autenticação:

Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]
    
por kravemir 28.03.2015 / 10:02

4 respostas

16

Desbloqueie a conta e forneça ao usuário uma senha complexa, como o @Skaperen sugere.

Edite /etc/ssh/sshd_config e verifique se você tem:

PasswordAuthentication no

Verifique se a linha não está comentado ( # no início) e salve o arquivo. Finalmente, reinicie o sshd service.

Antes de fazer isso, verifique se sua autenticação de chave pública está funcionando primeiro.

Se você precisar fazer isso para apenas um (ou um pequeno número) de usuários, deixe PasswordAuthentication ativado e use Match User :

Match User miro, alice, bob
    PasswordAuthentication no

Coloque na parte inferior do arquivo como válido até o próximo comando Match ou EOF.

Você também pode usar Match Group <group name> ou negação Match User !bloggs

Como você mencionou nos comentários, você também pode fazer a inversão para que a Autenticação de Senha esteja desabilitada na parte principal da configuração e use as instruções Match para habilitá-la para alguns usuários:

PasswordAuthentication no
.
.
.
Match <lame user>
    PasswordAuthentication yes
    
por 28.03.2015 / 10:35
25
Seja o que for, não deixe a conta no estado deixado por passwd -u , com um campo de senha em branco: que permite logins sem digitar uma senha (exceto por SSH, porque o SSH recusa isso).

Altere a conta para não ter senha, mas seja desbloqueada. Uma conta não tem senha se o hash da senha no banco de dados de senha não for o hash de qualquer string. Tradicionalmente, uma string de um caractere, como * ou ! , é usada para isso.

As contas bloqueadas também usam um marcador especial no campo de senha que faz com que a string não seja o hash de nenhuma string. O marcador é dependente do sistema. No Linux, o comando passwd marca senhas bloqueadas colocando ! no início, e o OpenSSH trata a conta como bloqueada se o campo começar com ! . Outras variantes do Unix tendem a usar mecanismos similares, mas não idênticos, então tome cuidado se o seu banco de dados de senhas é compartilhado entre uma rede heterogênea.

No Linux, você pode desabilitar o acesso baseado em senha a uma conta enquanto permite o acesso SSH (com algum outro método de autenticação, normalmente um par de chaves) com

usermod -p '*' username

O usuário não poderá alterar a conta de volta para ter uma senha, porque isso exige que eles digitem uma senha válida.

Se desejar, você pode configurar o SSH para recusar a autenticação de senha, independentemente de a conta ter uma senha. Você ainda precisará providenciar para que o SSH não considere a conta bloqueada, portanto, por exemplo, no Linux, você precisará remover o campo ! da senha (mas não torne o campo vazio - configure-o para * como explicado acima). Para desabilitar a autenticação de senha para SSH, adicione uma diretiva PasswordAuthentication a /etc/sshd_config ou /etc/ssh/sshd_config (o que estiver em seu sistema). Use um bloco Match para que essa diretiva se aplique somente a um usuário específico; Match blocos devem aparecer

…
Match User username
    PasswordAuthentication no
    
por 28.03.2015 / 21:23
3

Você não precisa ativar ou definir senhas, e você realmente não deveria, se você já estiver usando chaves strongs. Basta bloquear novamente sua conta (sudo passwd -l username) de uma sessão existente e corrigir sua configuração de SSH.

A razão pela qual isso aconteceu é provavelmente porque você editou uma das configurações padrão do daemon SSH (em / etc / ssh / sshd_config).

Altere isto em / etc / ssh / sshd_config e reinicie o SSH:

UsePAM yes

Em geral, a menos que você tenha uma boa razão para desabilitar o PAM, recomendo que você o mantenha habilitado; ativar o PAM no SSH permitirá que você ainda efetue login, mesmo com uma senha removida. Faça o que fizer, não defina uma senha vazia ou semelhante ... bloquear o campo de senha não significa bloquear toda a sua conta.

Dica rápida ao mexer com o SSH: mantenha aberta outra sessão (em outra janela) sempre que fizer alterações na configuração do SSH e, em seguida, teste se você ainda pode efetuar login; Se você inadvertidamente interromper seu acesso, use sua sessão atual para corrigi-lo.

(Isenção de responsabilidade: Eu trabalho no Userify, que fornece software de gerenciamento de chaves SSH.)

    
por 14.02.2017 / 02:15
-1

desbloqueie a conta e mude a senha para alguma string aleatória

    
por 28.03.2015 / 10:32

Tags