1) Dalam skrip rc SSH Anda (~ / .ssh / rc), Anda akan mengatur tautan simbolis dari lokasi kanonik ke SSH_AUTH_SOCK "saat ini". Inilah cara saya melakukannya di bash (konten ~ / .ssh / rc):
#!/bin/bash
if test "$SSH_AUTH_SOCK" ; then
ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi
(dan pastikan untuk chmod 755 ~ / .ssh / rc). "Tes" hanya untuk mencegah kesalahan menampilkan jika Anda tidak menjalankan ssh-agent (yaitu Anda ssh tanpa -A). Bagian kedua dari perintah itu mengatur symlink di lokasi kanonik yang memperbarui dirinya ke SSH_AUTH_SOCK "asli" pada saat masuk. Ini independen dari menggunakan shell di ssh atau langsung memanggil perintah, berfungsi juga dengan "ssh -t screen -RRD".
Catatan: keberadaan ~ / .ssh / rc mengubah perilaku sshd. Khususnya, itu tidak akan memanggil xauth. Lihat man sshd untuk informasi lebih lanjut, dan cara memperbaikinya.
Selain itu, Anda tidak boleh menggunakan "-v" dengan ln segera setelah itu akan memecah rsync-over-ssh dengan diagnostik berikut:
$ 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) Di .screenrc Anda, Anda hanya perlu mengganti SSH_AUTH_SOCK ke lokasi kanonik:
setenv SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
Perhatikan bahwa Anda menggunakan setenv tidak peduli apa shell yang Anda gunakan; Saya pikir setenv adalah sintaks layar, bukan shell.
Solusi awalnya diadaptasi dari pos ini , yang tidak berfungsi, tetapi memiliki ide yang tepat.