Pedido de autenticação com SSH

22

Quando eu faço login via ssh -v, vejo que o ssh está autenticando da seguinte maneira

debug1: Authentications that can continue: publickey,gssapi-with-mic,password,hostbased

Gostaria de mudar a ordem ... alguma ideia de como?

Meu maior problema é que o usuário com contas bloqueadas ainda pode fazer login via chaves públicas. Descobri que eu poderia adicionar o usuário a um grupo "ssh-locked" add negar esse grupo do sshing, mas ainda estou pensando se há uma maneira de dizer ao ssh'd: Verifique a senha antes das chaves ...

Oz123
fonte
11
Eu acho que você está abordando isso da maneira errada - as chaves são (geralmente) mais seguras que as senhas. Se a conta estiver bloqueada, você deverá informar ao daemon sshd para não permitir que o usuário efetue login, independentemente do método de autenticação.
precisa
Como eu disse, encontrei uma solução via DenyGroups. Estou pedindo isso por interesse.
Oz123

Respostas:

31

O servidor ssh decide quais opções de autenticação ele permite, o cliente ssh pode ser configurado para decidir em qual ordem tentar.

O cliente ssh usa a PreferredAuthenticationsopção no arquivo de configuração ssh para determinar isso.

De man ssh_config( veja online aqui ):

PreferredAuthentications
             Specifies the order in which the client should try protocol 2 authentication methods.  This allows a client to prefer
             one method (e.g. keyboard-interactive) over another method (e.g. password).  The default is:

                   gssapi-with-mic,hostbased,publickey,
                   keyboard-interactive,password

Eu não acredito que seja possível, sem brincar com a fonte, dizer ao servidor OpenSSH para preferir uma certa ordem - se você pensar sobre isso, não faz muito sentido de qualquer maneira.

EightBitTony
fonte
Se você estiver usando Git Bash para Windows, salvar sua configuração do ssh para~/.ssh/config
Spencer Williams
A ordem pode fazer sentido se um método depender de um anterior. Por exemplo, 2FA em teclado interativo pode depender do usuário ter fornecido uma senha válida primeiro.
steveayre
Você pode postar uma fonte onde copiou e colou as informações de PreferredAuthentications acima? Eu não vejo isso dentro man ssh, nem dentro /etc/ssh/ssh_config, nem dentro /etc/ssh/sshd_config. Onde você conseguiu esta informação?
Gabriel Staples
Encontrei! Foi dentro man ssh_config. Enviei uma edição para revisão para atualizar sua resposta para conter esta fonte. Por favor, cite fontes na próxima vez! Muito Obrigado.
Gabriel Staples
18

Adicionando isso:

PreferredAuthentications keyboard-interactive,password,publickey,hostbased,gssapi-with-mic

... para o meu /etc/ssh/ssh_configme ajudou a resolver isso, e economizou muito tempo também!

Você pode verificar se funciona usando o ssh -v user@hostcomando para conectar, onde -vsignifica "detalhado".

Pavel Anni
fonte
2
Verifique se você está adicionando isso ao arquivo correto ssh_confige não sshd_config. Este último fará com que seu ssh falhe!
precisa
0

Adicionando às outras duas respostas já mencionando a PreferredAuthenticationsopção, gostaria de adicionar que você não precisa editar nenhum arquivo para definir essa configuração, se não desejar . Em vez disso, você pode configurá-lo na linha de comando de uma chamada individual parassh , com a -oopção, da seguinte maneira:

ssh -o PreferredAuthentications=publickey,gssapi-with-mic,hostbased,keyboard-interactive,password user@hostname

Referências:

  1. Para ler mais sobre a PreferredAuthenticationsopção, consulte man ssh_config( consulte on-line aqui ). Leia também sobre a ssh -oopção nas man sshpáginas de manual ( online aqui ).
Gabriel Staples
fonte