Chave pública -ou- senha e autenticador do Google para login SSH

Chave pública -ou- senha e autenticador do Google para login SSH

Encontrei um artigo (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/) que explica como configurar o OpenSSH para solicitar um código do Google Authenticator após um login bem-sucedido.

É possível configurar o OpenSSH para que aconteça o seguinte:

  • Se o usuário tiver a chave privada correta para fazer login no servidor, faça login do usuário.
  • Se o usuário não tiver uma chave privada com permissão para fazer login no servidor, peça ao usuário a senha da conta E um código do Google Authenticator.

Isso seria conveniente (já que em meus computadores eu só precisaria da chave privada) e seguro (já que poderia deixar a autenticação por senha habilitada e segura).

Existe alguma maneira de realizar o que eu quero?

Desde já, obrigado. :)

Responder1

É definitivamente possível configurar um sshdpara exigirqualquerum par de chaves válidoouuse HOTP (nova senha de uso único (OTP) em cada solicitação) Autenticação baseada em OATH - estou fazendo isso. Tenho quase certeza de que o Google Authenticator é apenas mais uma implementação do OATH.

Meu artigo completo pode ser lido emhttp://www.teaparty.net/technotes/yubikey-oath.html, mas o resultado é:

Supondo que você sshdjá esteja configurado para permitir autenticação baseada em chave pública (a maioria está), adicione estas duas linhas a sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication yes 

Instale pam_auth(sendo esta a forma orientada para CentOS, para x86_64):

yum install pam_oath
ln -s /usr/lib64/security/pam_oath.so /lib64/security/

Faça o arquivo de autenticação /etc/users.oath, mode 600, proprietário root:roote preencha-o com linhas como:

#type   username        pin     start seed
HOTP    fred            -       123a567890123b567890123c567890123d567890

Edite /etc/pam.d/sshde adicione a linha

auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8 

Pule o digits=8se estiver satisfeito com o HOTP OATH de 6 dígitos. Acredito que um método semelhante pode ser usado para TOTP OATH (novo OTP a cadansegundos), mas estou usando tokens OATH de hardware em vez de tokens de software, e eles são yubikeys, que só fazem HOTP OATH.

O único problema é que quando você faz o ssh sem apresentar uma chave válida, ele pede o código OATHantesa senha. Eu não poderia fazer o contrário, mas decidi que não me importava muito; os prompts deixam bem claro qual token está sendo solicitado.

Responder2

Você precisa anexar:

AuthenticationMethods publickey keyboard-interactive

sem vírgula entre publickeye keyboard-interactivepara /etc/ssh/sshd_config. Todas as outras configurações não precisam ser alteradas (desde que a configuração seja igual à do tutorial do howtogeek fornecido).

informação relacionada