1) Em seu script SSH rc (~ / .ssh / rc) você irá configurar um link simbólico de um local canônico para o SSH_AUTH_SOCK "atual". Aqui está como eu faço isso no bash (conteúdo de ~ / .ssh / rc):
#!/bin/bash
if test "$SSH_AUTH_SOCK" ; then
ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi
(e certifique-se de chmod 755 ~ / .ssh / rc). O "teste" é apenas para evitar que um erro seja exibido se você não estiver executando o ssh-agent (ou seja, você ssh sem -A). A segunda metade desse comando configura um symlink em um local canônico que se atualiza para o SSH_AUTH_SOCK "real" no momento do login. Isto é independente de usar um shell em ssh ou chamar diretamente um comando, funciona também com "ssh -t screen -RRD".
Nota: a existência de ~ / .ssh / rc altera o comportamento do sshd. Notavelmente, não irá chamar xauth. Veja man sshd para mais informações e como corrigir isso.
Além disso, você não deve usar "-v" com ln assim que interromper o rsync-over-ssh com os seguintes 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) No seu .screenrc, você só precisa substituir o SSH_AUTH_SOCK para o local canônico:
setenv SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
Note que você usa setenv não importa qual shell você usa; Eu acho que setenv é a sintaxe da tela, não o shell.
Solução originalmente adaptada de este post , que não funciona, mas tem o direito idéia.