Como desativar a senha de tentar novamente no comando ssh

11

Eu quero que o comando ssh permita apenas uma chance de digitar a senha, se a senha estiver errada na primeira vez que o ssh retornará

Permission denied (publickey......).

Existe um sinalizador que diz ao ssh para solicitar apenas uma vez a senha?

Ao invés de:

[nir@dhcppc4 ~]$ ssh [email protected]
[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password: 
Permission denied (publickey.....).

Eu quero:

[nir@dhcppc4 ~]$ ssh [email protected]
[email protected]'s password: 
Permission denied (publickey.....).

A solução deve estar no lado do cliente (por exemplo, algum sinalizador para o comando ssh ou usando o pipeline), não consigo tocar sshd_configou qualquer outro arquivo de configuração do sistema. Como em geral eu construo software de terceiros (para que eu não possa gerar chaves nem arquivos de sistema de configuração) que acessam os servidores na LAN, as senhas são salvas no banco de dados (portanto, não precisa de segunda tentativa). E no meu código, se eu puder assumir que eu tenho apenas uma tentativa ssh/ scpisso simplificará o código relevante.

Nir
fonte
1
Como as respostas mostram, você pode modificar isso, mas por que deseja? As pessoas cometem erros de digitação com frequência e os padrões são definidos para permitir tais fragilidades. A melhor pergunta seria "como faço para bloquear um usuário que falhou n tentativas de login?" especialmente se você deseja se proteger contra logons maliciosos.
RSU
Minha razão é complexa e longa. O que posso dizer é que, se a senha estava incorreta na primeira vez - ela continuará incorreta nos seguintes horários.
Nir
2
Você deseja executar a função mais básica de administração do sistema (autenticação), mas não pode tocar nos arquivos de configuração do sistema? Você não está com sorte. Se o cuidado de explicar a sua razão longa e complexa, talvez possamos ser capazes de ver a X em vez do Y que você apresentou na sua XY Problema
msw
1
A única maneira de ver isso mesmo sendo um problema é se você estiver executando autenticação de senha de maneira não interativa; nesse caso, qualquer utilitário que você esteja usando para fazer isso deve ter a facilidade de abortar após uma falha na senha ou, se não , esse utilitário deve ser o assunto desta pergunta.
Sammitch 10/09/13
1
Percebo também que o ssh está notando uma tentativa fracassada de autenticação de chave pública, você já pensou em copiar sua chave pública e evitá-la completamente?
Sammitch 10/09/13

Respostas:

14

Na página do manual sshd config man 5 sshd_config:

 MaxAuthTries
     Specifies the maximum number of authentication attempts permitted
     per connection.  Once the number of failures reaches half this
     value, additional failures are logged.  The default is 6.

Portanto, uma configuração de MaxAuthTries 2será a configuração que você precisará. sshdprecisará ser reiniciado posteriormente (deve ser executado como root):

/etc/init.d/ssh restart 

ou

service ssh restart

No lado do cliente, isso pode ser definido com as configurações ssh (observe man 5 ssh_configas configurações que você pode aplicar):

 NumberOfPasswordPrompts
         Specifies the number of password prompts before giving up.  The
         argument to this keyword must be an integer.  The default is 3.

Então edite seu ~/.ssh/configarquivo e adicione:

 Host <name_or_ip_of_host|*>
     NumberOfPasswordPrompts 1

Onde <name_or_ip_of_host|*>o IP canônico ou o nome do host que você está usando na linha de comando ou *para todas as tentativas de conexão do host. Você também pode especificar isso na linha de comando sem precisar editar seu /.ssh/configarquivo:

  ssh -o NumberOfPasswordPrompts=1 user@hostname 
Drav Sloan
fonte
Consulte a edição da pergunta. Eu queria algum uso da bandeira / gasoduto e não muda emsshd_config
Nir
Editei minha resposta, oferecendo opções do lado do cliente.
Drav Sloan
0

Veja MaxAuthTries em sshd_config. O padrão é 6, portanto, lembre-se de que você pode estar tentando a autenticação de pubkey antes de tentar a autenticação de senha ao selecionar seu valor.

John
fonte