Como desabilitar a senha try again no comando ssh

8

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?

Em vez 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, um sinalizador para o comando ssh ou usando pipeline), não consigo tocar em sshd_config ou qualquer outro arquivo de configuração do sistema. Porque - 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 uma segunda tentativa). E no meu código, se puder assumir que só tenho uma tentativa de ssh / scp , simplificará o código relevante.

    
por Nir 09.09.2013 / 14:37

2 respostas

11

Na página do manual de configuração do sshd 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 2 será a configuração que você precisará. sshd precisará ser reiniciado depois (tem que 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 do ssh (veja em man 5 ssh_config para as 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 arquivo ~/.ssh/config e adicione:

 Host <name_or_ip_of_host|*>
     NumberOfPasswordPrompts 1

Em que <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 ter que editar o arquivo /.ssh/config :

  ssh -o NumberOfPasswordPrompts=1 user@hostname 
    
por 09.09.2013 / 15:27
0

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

    
por 09.09.2013 / 15:27