Usando o Yubikey para o sudo na sessão SSH

8

Atualmente, uso Kryptonite para lidar com a proteção da chave privada que uso para o SSH nos hosts. Isso funciona bem, exceto quando eu preciso escalar para root.

Quando eu sudo tenho que copiar uma cadeia de 20 caracteres gerada aleatoriamente do meu gerenciador de senhas, verifique se estou realmente no prompt de senha e cole-a para que meu comando seja executado.

Preferiria usar meu Yubikey para autenticar sudo . Eu posso encontrar 101 guias sobre como fazer isso quando sudo ing em hosts locais com o Yubikey plugado em meus hosts locais, mas como posso fazer isso quando eu quero sudo em um host remoto através de SSH com a chave ligado à minha máquina local?

Ambos os hosts locais e remotos estão executando distribuições Linux / GNU recentes, especificamente o RHEL / Fedora, se isso faz diferença.

    
por thomasfedb 02.05.2017 / 15:56

1 resposta

7

Existe pam_ssh_agent_auth , que faz exatamente o que você precisa. Este pacote está disponível tanto para o Fedora quanto para o RHEL, então o processo de configuração e instalação é muito direto:

yum install pam_ssh_agent_auth

Adicione ao seu /etc/sudoers :

Defaults    env_keep += \"SSH_AUTH_SOCK\"

Coloque sua chave ssh-public em /etc/security/authorized_keys (obtenha do yubikey, por exemplo, usando ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so )

Adicione uma linha ao início de /etc/pam.d/sudo :

auth       sufficient   pam_ssh_agent_auth.so

Em seguida, basta adicionar a biblioteca pkcs11 ao seu ssh-agent e executar sudo sem senha (autenticando usando a chave no token):

ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so
sudo -i

Este processo também é descrito na página de manual para pam_ssh_agent_auth .

Note que as chaves no yubikey precisam ser geradas antes, mas isso já está descrito na documentação do Yubico.

    
por 02.05.2017 / 16:39

Tags