1) En su script SSH rc (~ / .ssh / rc) configurará un enlace simbólico desde una ubicación canónica al SSH_AUTH_SOCK "actual". Así es como lo hago en bash (contenido de ~ / .ssh / rc):
#!/bin/bash
if test "$SSH_AUTH_SOCK" ; then
ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi
(y asegúrese de chmod 755 ~ / .ssh / rc). La "prueba" es solo para evitar que se muestre un error si no está ejecutando ssh-agent (es decir, ssh sin -A). La segunda mitad de ese comando configura un enlace simbólico en una ubicación canónica que se actualiza a sí mismo al SSH_AUTH_SOCK "real" en el momento del inicio de sesión. Esto es independiente de usar un shell en ssh o llamar a un comando directamente, también funciona con "ssh -t screen -RRD".
Nota: la existencia de ~ / .ssh / rc cambia el comportamiento de sshd. Notablemente, no llamará a xauth. Consulte man sshd para obtener más información y cómo solucionarlo.
Además, no debe usar "-v" con ln tan pronto como rompa rsync-over-ssh con los siguientes diagnósticos:
$ rsync -n addr.maps.dev.yandex.net: .
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(173) [Receiver=3.0.7]
2) En su .screenrc, solo necesita anular SSH_AUTH_SOCK a la ubicación canónica:
setenv SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
Tenga en cuenta que usa setenv sin importar qué shell use; Creo que setenv es la sintaxis de la pantalla, no el shell.
Solución originalmente adaptada de esta publicación , que no funciona, pero tiene la idea correcta.