O ssh não permite que eu entre, porque a conta está bloqueada. Desejo desbloquear o usuário no meu servidor para autorização de chave pública por ssh, mas não habilito 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 log 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]
passwd -u
é uma má ideia. Veja a resposta de Giles abaixo.Respostas:
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:Verifique se a linha não está comentada (
#
no início) e salve o arquivo. Por fim, reinicie osshd
serviço.Antes de fazer isso, verifique se a autenticação de chave pública está funcionando primeiro.
Se você precisar fazer isso para apenas um (ou um número pequeno) de usuários, deixe
PasswordAuthentication
ativado e useMatch User
:Coloque na parte inferior do arquivo, pois é válido até o próximo
Match
comando ou EOF.Você também pode usar
Match Group <group name>
ou uma negaçãoMatch User !bloggs
Como você mencionou nos comentários, também é possível revertê-lo para que a autenticação por senha seja desabilitada na parte principal da configuração e use as
Match
instruções para habilitá-lo para alguns usuários:fonte
Match
sintaxe parece boa, mas vou tentar revertida. Habilite o login editado por senha para (poucos coxos) usuários.Faça o que fizer, não deixe a conta no estado deixado por
passwd -u
, com um campo de senha em branco: isso permite logins sem digitar uma senha (exceto pelo SSH, porque o SSH recusa isso).Altere a conta para não ter senha, mas seja desbloqueada. Uma conta não terá senha se o hash da senha no banco de dados de senhas não for o hash de nenhuma sequência. Tradicionalmente, uma cadeia 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 sequência não seja o hash de nenhuma sequência. O marcador depende do sistema. No Linux, o
passwd
comando marca senhas bloqueadas colocando a!
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 semelhantes, mas não idênticos, portanto, tome cuidado se o banco de dados de senhas for compartilhado entre uma rede heterogênea.No Linux, você pode desativar o acesso baseado em senha a uma conta enquanto permite o acesso SSH (com algum outro método de autenticação, geralmente um par de chaves) com
O usuário não poderá alterar a conta novamente para ter uma senha, pois isso exige que ele insira 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. Por exemplo, no Linux, você precisará remover o
!
campo da senha (mas não deixe o campo vazio - configure-o*
como explicado acima ) Para desabilitar a autenticação de senha para SSH, adicione umaPasswordAuthentication
diretiva a/etc/sshd_config
ou/etc/ssh/sshd_config
(o que estiver no seu sistema). Use umMatch
bloco para fazer com que essa diretiva se aplique apenas a um usuário específico;Match
blocos devem aparecerfonte
usermod -p '*' username
trabalhou um charme!!
prefixo) façam login com algum outro método de autenticação, seUsePAM yes
estiver definidosshd_config
. Este é provavelmente o padrão na maioria das distribuições (por exemplo, com o Fedora).'*'
vs.'!'
é super útil.Você não precisa habilitar ou definir senhas, e realmente não deveria, se já estiver usando chaves fortes. Apenas troque novamente sua conta (sudo passwd -l nome de usuário) de uma sessão existente e corrija sua configuração 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 isso em / etc / ssh / sshd_config e reinicie o SSH:
Em geral, a menos que você tenha realmente um bom motivo para desativar o PAM, recomendo que você o mantenha ativado; 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 da senha não significa bloquear toda a sua conta.
Dica rápida ao mexer com o SSH: mantenha outra sessão aberta (em outra janela) sempre que fizer alterações na configuração do SSH e, em seguida, teste se você ainda pode fazer login; se você inadvertidamente interromper seu acesso, use sua sessão atual para corrigi-lo.
(Aviso: trabalho na Userify, que fornece software de gerenciamento de chaves SSH.)
fonte
Eu tive esse problema no CentOS 7. Eu sou um usuário comum do Linux baseado no Debian, então eu era um peixe fora d'água. Percebi que em alguns servidores funcionou e em apenas um não. O audit.log não disse nada de útil e o secure.log também não forneceu nada. Eu descobri que a única diferença real eram algumas diferenças de contexto de segurança em arquivos e diretórios entre aqueles que funcionavam e os que não funcionavam. Obtenha segurança com
sudo ls -laZ <user-home>/.ssh
do diretório (estou assumindo muitos padrões no sshd_config).
Você deve ver alguns
ssh_home_t
euser_home_t
atributos. Caso contrário, use ochcon
comando para adicionar os atributos ausentes.Por exemplo
No meu caso, minha suspeita é que o usuário tenha sido criado de maneira não padrão. Sua casa era um diretório em
/var/lib
.Mais informações em: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
fonte
desbloqueie a conta e altere a senha para uma sequência aleatória
fonte