Michael,
O que você deseja alcançar pode ser executado de duas maneiras:
Uma das que você encontrou é usar pam_ssh_agent_auth ou talvez queira use seu "primo pobre" :
ssh para localhost aliado ao encaminhamento de chaves SSH.
Instruções passo a passo aqui apontam para um servidor Ubuntu, mas todos os comandos devem estar ok com o seu FreeBSD, já que são características do próprio OpenSSH.
1. adicione a chave ao ssh-agent:
user@workstation:~$ ssh-add
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
2. Copie a chave para a conta do usuário no servidor de destino
user@workstation:~$ ssh-copy-id destination-server
user@destination-server's password:
Now try logging into the machine, with "ssh 'destination-server'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
3. Teste o login baseado em chave:
user@workstation:~$ ssh -A destination-server
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-10-server x86_64)
* Documentation: http://www.ubuntu.com/server/doc
Last login: Mon Aug 8 20:38:48 2011 from 192.168.123.123
user@destination-server:~$
4. Agora copiamos as chaves SSH para: /root/.ssh /
user@destination-server:~$ sudo cp ~/.ssh/authorized_keys /root/.ssh/
[sudo] password for user:
user@destination-server:~$ sudo ls -l /root/.ssh/au*
total 4
-rw------- 1 root root 392 2011-08-08 20:44 authorized_keys
5. Voltando à vida normal do usuário, verificamos a existência de um soquete de autenticação do SSH:
$ echo $SSH_AUTH_SOCK
/tmp/ssh-bUhwiw3004/agent.3004
6. Tempo divertido!
Nota: tenha em mente que o seu SSHd pode ser configurado para negar acesso root. Lembre-se de ativá-lo
user@destination-server:~$ ssh root@localhost
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-10-server x86_64)
* Documentation: http://www.ubuntu.com/server/doc
Last login: Mon Aug 8 21:07:29 2011 from eedev.local
root@destination-server:~# id
uid=0(root) gid=0(root) groups=0(root)
7. A festa ainda não acabou ... Você pode relaxar e brincar com a configuração usando um pseudônimo:
Nota: tem em mente que o relacionamento SSH e tty tende a ser problemático
user@destination-server:~$ alias sshudo='ssh -4 -t root@localhost'
user@destination-server:~$ sshudo id
uid=0(root) gid=0(root) groups=0(root)
Connection to localhost closed.
user@destination-server:~$ sshudo vi /etc/sudoers
E voilà!
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-10-server x86_64)
* Documentation: http://www.ubuntu.com/server/doc
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"/etc/motd" 4 lines, 114 characters
8. Antes de você ir ... Ajuste-o:
user@destination-server:~$ sshudo vi /root/.ssh/authorized_keys
Adicione o from="localhost"
à frente da chave SSH que você está usando. isso restringirá o acesso de usuários remotos usando essa chave e testará:
user@destination-server:~$ sshudo id
user@destination-server:~$ uid=0(root) gid=0(root) groups=0(root)
user@destination-server:~$ Connection to localhost closed.
Faça o logout e teste a restrição
user@destination-server:~$ exit
Connection to destination-server closed.
user@workstation:~$ ssh root@destination-server
root@destination-server's password:
Espero que isso ajude.