Eu tenho lutado com essa questão em particular a maior parte do dia, e tenho feito ALGUM progresso, mas ainda estou um pouco preso.
Eu gostaria de poder autenticar uma sessão SSH usando um arquivo de chave privada e, em seguida, usar essa mesma autenticação para também autenticar as solicitações sudo.
O sistema que estou conectando FROM é uma caixa do Windows usando Putty e Pageant.
O sistema que eu estou conectado ao TO é uma caixa do Ubuntu rodando 13.10 Saucy (32-bit), e especificamente o servidor OpenSSH.
Eu gerou com sucesso uma chave RSA de 4096 bits e sou capaz de usá-la para conectar-se a sessões SSH sem problemas.
Para facilitar a autenticação do sudo, estou tentando instalar e usar o libpam-ssh-agent-auth. Está no SourceForge e está documentado aqui: link
Há muitas informações e instruções on-line sobre essa biblioteca, mas as informações e os guias estão desatualizados e / ou específicos de distro.
Alguns dos meus progressos:
Descobri que você deve habilitar o encaminhamento de agente de usuário E ter Pageant instalado e em execução em Putty para obter com êxito o agente de usuário para realmente aparecer no servidor Ubuntu. Eu também tive que adicionar o "AllowAgentForwarding yes" ao / etc / ssh / sshd_config, e a linha "Defaults env_keep + = SSH_AUTH_SOCK" para / etc / sudoers (depois das outras 3 linhas de Padrões).
Essas alterações parecem ter permitido que o soquete de autenticação SSH se propagasse até os comandos sudo, conforme testado no terminal da seguinte forma:
echo "$SSH_AUTH_SOCK"
/tmp/ssh-4LcT4GZtZ8/agent.6725
sudo echo "$SSH_AUTH_SOCK"
/tmp/ssh-4LcT4GZtZ8/agent.6725
Antes de fazer essas alterações, eu não estava obtendo SSH_AUTH_SOCK, e estava recebendo apenas no prompt de comando normal, não no sudo. Faça as mudanças documentadas acima permitiram que o socket de autenticação passasse para o sudo.
A etapa final parece estar instalando a libpam-ssh-agent-auth e, em seguida, fazendo as alterações de configuração apropriadas em /etc/pam.d/sudo.
Eu tentei compilá-lo sozinho, e também instalar o .debs pré-compilados de dois PPAs diferentes como parte da minha busca para que isso funcionasse (como eu disse, tentei o dia todo)
Este passo final é o que me prendeu. Basicamente, apesar de as coisas aparentemente estarem configuradas corretamente, eu não estou obtendo sucesso.
Entendo que o meu caso de teste deveria ser executar um "sudo -K" e depois suar qualquer comando. O -K redefine o temporizador sudo, forçando a nova autenticação na próxima tentativa de sudo.
Eu não tive sucesso.
Meu arquivo /etc/pam.d/sudo atual:
#%PAM-1.0
auth required pam_env.so readenv=1 user_readenv=0
auth required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
auth requisite pam_unix.so nullok_secure
@include common-auth
@include common-account
@include common-session-noninteractive
Eu percebi que este pode ser um bom lugar para postar sobre essas coisas.