Você pode encaminhar o Agente SSH para um chroot, mas você tem que passar por alguns arcos, o primeiro dos quais está tornando o soquete acessível no chroot e o segundo está dizendo aos usuários dentro do chroot sobre isso.
Para disponibilizar o soquete, a sugestão do OP de usar socat
funciona desde que as permissões estejam definidas corretamente. Supondo que você esteja usando um script para iniciar o chroot, o snippet a seguir usa socat
para fornecer o soquete do agente no chroot:
# Set up a SSH AGENT forward socket
if [ -n "$SSH_AUTH_SOCK" ]
then
_dir="$mnt$(dirname $SSH_AUTH_SOCK)"
_owner=$(awk -F':' '{if ($1=="alice") {print $3":"$4}}' $mnt/etc/passwd)
mkdir "$_dir"
chown "$_owner" "$_dir"
socat UNIX-CONNECT:$SSH_AUTH_SOCK \
UNIX-LISTEN:$mnt$SSH_AUTH_SOCK,fork,user=${_owner%:*} &
socat_pid=$!
export SSH_AUTH_SOCK
fi
Estabelece o uid
e gid
do usuário ( alice no exemplo) dentro do chroot que deve ser capaz de acessar o agente. Em seguida, ele cria esse diretório e estabelece um socat
praticamente da mesma maneira que o OP. A adição é o user=${_owner%:*}
pirce que define o uid no socket dentro do chroot para que alice possa acessá-lo.
Em seguida, ele lembra o socat
PID para que ele possa ser removido quando o chroot sair. Finalmente, ele exporta a variável SSH_AUTH_SOCK
para disponibilizá-la no chroot.
Agora, chroot
só pode ser feito por root
, então acho que o script é executado com sudo
de um usuário comum que possui o processo do agente. Se isto for preciso, então há mais uma coisa a fazer que é permitir que sudo
passe o ambiente variável para o script. Para fazer isso, edite /etc sudoers
(o mecanismo aprovado é para sudo visudo
) e adicione o seguinte:
Defaults env_keep+=SSH_AUTH_SOCK
Essa mudança também precisa ser feita para /etc/sudoers
no chroot se sudo
for usado dentro do chroot (ou seja, para mudar de root
para alice
).
Aqui está um exemplo de um soquete de agente dentro de um chroot visto por um usuário comum.
$ ls -l $SSH_AUTH_SOCK
srwxr-xr-x 1 alice root 0 Feb 1 15:06 /tmp/ssh-q1ntaubl6I2z/agent.1443