como desativar o login SSH com senha para alguns usuários?


166

No Linux (Debian Squeeze), gostaria de desativar o login SSH usando a senha de alguns usuários (grupo selecionado ou todos os usuários, exceto root). Mas não quero desativar o login usando o certificado para eles.

editar: muito obrigado pela resposta detalhada! Por alguma razão, isso não funciona no meu servidor:

Match User !root
PasswordAuthentication no

... mas pode ser facilmente substituído por

PasswordAuthentication no
Match User root
PasswordAuthentication yes

Talvez seja por causa do seu recuo?
nil

7
Vale a pena mencionar que essas linhas em jogo deve ser no final do arquivo
zidarsk8

11
! root também não funciona para mim. A segunda abordagem fez o truque.
natenho

Eu já vi casos em que Match User "!root,*"fez o trabalho.
Roman Hocke 5/06

Respostas:


181

Experimente Matchem sshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

Ou por grupo:

Match Group users
    PasswordAuthentication no

Ou, como mencionado no comentário, por negação:

Match User !root
    PasswordAuthentication no

Observe que a correspondência é efetiva "até outra linha de correspondência ou o final do arquivo". (o recuo não é significativo)


4
prefere Match user !rootpara este caso
84104 30/06/11

11
Incrível, eu não conhecia a sintaxe do Match. Uma sugestão que eu faria, no entanto, é que, se este for um servidor público, eu não permitiria o login root através do SSH. Provavelmente não um grande negócio se é Interno embora ..
Safado

4
@SpacemanSpiff É para isso que servem a) senhas fortes eb) denyhosts / fail2ban.
ceejayoz

2
@ deed02392 Você pode considerar que uma chave é uma senha muito forte, se quiser.
ceejayoz

4
É muito mais forte que não está no mesmo estádio, esse foi o meu ponto. A autenticação de senha também deve ser desativada para raiz e as chaves permitidas apenas para logins.
deed02392

22

Matchem sshd_configobras bem. Você deve Match allterminar o bloco de partida se estiver usando o openssh 6.5p1 ou superior. Exemplo:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all

Não funcionou para mim ...
Dimitrios

"Combinar tudo" fez o truque. Obrigado. Sem o "Match all", o sshd falha ao iniciar.
Vladimir Kondratyev

3

Existem algumas maneiras de fazer isso - primeiro, você pode executar um segundo daemon sshd em uma porta diferente com uma configuração diferente - é um pouco complicado, mas com algum trabalho chroot, ele deve funcionar perfeitamente.

Além disso, você pode permitir a autenticação de senha, mas bloquear as senhas para todos, exceto o usuário. Os usuários com senhas bloqueadas ainda poderão se autenticar com chaves públicas.


-1

você pode simplesmente ir para o arquivo / etc / ssh / sshd_config e adicionar uma linha Para permitir -> AllowUsers user1 Para negar ---> DenyUsers user2

podemos permitir / negar login para um conjunto específico de hosts usando os arquivos hosts.allow ou hosts.deny localizados na pasta / etc


-1

Devido a algum motivo de segurança, pode ser necessário bloquear o acesso de certos SSH do usuário ao Linux.

Edite o arquivo sshd_config, o local às vezes será diferente dependendo da distribuição do Linux, mas geralmente está em / etc / ssh /.

Abra o arquivo enquanto estiver conectado como root:

# vi /etc/ssh/sshd_config

Insira uma linha no final do arquivo de configuração: -

DenyUsers username1 username2 username3 username4

Salve-o e reinicie os serviços SSH. Basicamente nome de usuário1, nome de usuário2, nome de usuário3 e nome de usuário4 O login SSH não é permitido.

Execute o comando abaixo para reiniciar o mesmo: -

# systemctl restart sshd

O requisito foi feito. Pegue o ssh desses usuários e você receberá o erro "Acesso negado"


11
A questão era desabilitar o login de senha (mas manter o login com autenticação de chave).
Gerald Schneider
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.