ssh -o PreferredAuthentications: Qual é a diferença entre “senha” e “teclado interativo”?

33

Tanto PreferredAuthentications=password quanto PreferredAuthentications=keyboard-interactive solicitarão a senha, então qual é a diferença entre eles?

Eu usei o Google com as palavras-chave ssh PreferredAuthentications senha teclado-interativo diferença mas não encontrou respostas.

A única diferença que notei são as strings de prompt ( user@host's password: vs. Password: ):

$ ssh -o PreferredAuthentications=password,keyboard-interactive my-host
root@my-host's password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).

UPDATE (2018-04-09):

Para facilitar a consulta, o seguinte é do livro do SSH: TDG mencionado em resposta de jouell .

"keyboard-interactive" user authentication is intended primarily to accomodate PAM authentication on the server side. It provides for a multiple challenge-response dialog with the user in which the server sends a text query to the user, the user types in a response, and this process can repeat any number of times. So for example, you might configure PAM for SSH with a module which performs authentication using an RSA security token, or a one-time password scheme. People become confused by this because by default, "keyboard-interactive" authentication usually just implements password authentication in a single challenge-response cycle, which just prompts for a password, thus looking exactly the same as "password" authentication. If you're not deliberately using both for different purposes, you may want to disable one or the other to avoid end-user confusion.

    
por pynexj 27.03.2015 / 07:05

2 respostas

32

O protocolo SSH possui vários métodos de autenticação. A senha e keyboard-interactive são duas delas.

A autenticação por senha é uma solicitação simples para uma única senha. Não há um prompt específico enviado pelo servidor. Portanto, é o cliente que escolhe como rotular o prompt (o prompt "senha do usuário @ host" é dos clientes OpenSSH , como ssh , sftp , etc ).

A autenticação interativa por teclado é uma solicitação mais complexa para um número arbitrário de informações. Para cada informação, o servidor envia o rótulo da solicitação. Além disso, permite que o servidor forneça uma descrição detalhada do "formulário" geral. O servidor também pode especificar quais entradas são secretas (precisam ser ofuscadas quando o usuário as digita) e quais não são.

Embora na maioria dos casos a autenticação interativa por teclado seja usada para solicitar um único prompt de senha "secreta", dificilmente haverá alguma diferença para a autenticação por senha .

Essa é a diferença da perspectiva do protocolo.

Da perspectiva da implementação, com o servidor OpenSSH, a autenticação interativa com teclado pode ser conectada a autenticações de dois fatores (ou multifatores), por exemplo, fornecido pelo mecanismo genérico do PAM ou Kerberos .

Da perspectiva do cliente, outra diferença é a localização. Com autenticação por senha , o cliente pode localizar o rótulo "Senha" , porque sabe que o servidor está solicitando uma senha. Com a autenticação interativa com teclado , mesmo quando o servidor está solicitando apenas uma senha, o cliente não pode localizar o prompt (a menos que ele empregue AI), porque é um prompt genérico.

    
por 27.03.2015 / 08:21
2

Você já sabe o que é "senha". A partir de um nível muito alto (não em linguagem de protocolo no nível do bloco), pense em 'keyboard-interactive' como o método que você usa o 2FA usando Radius e / ou SecurID etc. Ele fornece diálogos de desafios e respostas: ssh.com tem uma breve descrição sobre ele. Ele vai um passo além para destacar o teclado interativo é o guarda-chuva que se enquadra a senha. Respeitosamente aos autores, é um pouco confuso.

Veja também a definição Snail Book . Usamos isso com frequência para nossas caixas protegidas por RSA.

    
por 08.04.2018 / 02:54