1) Dans votre script SSH rc (~ / .ssh / rc), vous allez configurer un lien symbolique depuis un emplacement canonique vers le "courant" SSH_AUTH_SOCK. Voici comment je le fais dans bash (contenu de ~ / .ssh / rc):
#!/bin/bash
if test "$SSH_AUTH_SOCK" ; then
ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi
(et assurez-vous de chmod 755 ~ / .ssh / rc). Le "test" sert simplement à empêcher une erreur de s'afficher si vous n'exécutez pas ssh-agent (c'est-à-dire que vous utilisez ssh sans -A). La seconde moitié de cette commande établit un lien symbolique dans un emplacement canonique qui se met à jour avec la "vraie" SSH_AUTH_SOCK au moment de la connexion. Ceci est indépendant de l'utilisation d'un shell dans ssh ou de l'appel direct d'une commande, fonctionne également avec "ssh -t screen -RRD".
Remarque: l'existence de ~ / .ssh / rc modifie le comportement de sshd. Notamment, il n'appellera pas xauth. Voir man sshd pour plus d'informations et pour résoudre ce problème.
De plus, vous ne devriez pas utiliser "-v" avec ln dès que cela cassera rsync-over-ssh avec les diagnostics suivants:
$ 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) Dans votre .screenrc, il vous suffit de remplacer le SSH_AUTH_SOCK par l'emplacement canonique:
setenv SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
Notez que vous utilisez setenv quel que soit le shell que vous utilisez; Je pense que setenv est la syntaxe de l'écran, pas le shell.
La solution initialement adaptée de ce post , qui ne fonctionne pas, mais a la bonne idée.