1) SSH rc betiğinizde (~ / .ssh / rc), kurallı bir konumdan "geçerli" SSH_AUTH_SOCK'a sembolik bir bağlantı kuracaksınız. İşte bash olarak nasıl yaparım (~ / .ssh / rc'nin içeriği):
#!/bin/bash
if test "$SSH_AUTH_SOCK" ; then
ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi
(ve 755 ~ / .ssh / rc chmod olduğundan emin olun). "Test", eğer ssh-agent'ı çalıştırmıyorsanız (yani -A'sız ssh) görüntülememek için bir hatanın görünmesini engellemek içindir. Bu komutun ikinci yarısı, oturum açma anında kendisini "gerçek" SSH_AUTH_SOCK'a güncelleyen kanonik bir konumda bir sembolik bağlantı kurar. Bu, ssh'de bir kabuk kullanmaktan veya doğrudan bir komut çağırmaktan bağımsızdır, "ssh -t screen -RRD" ile de çalışır.
Not: ~ / .ssh / rc'nin varlığı sshd'nin davranışını değiştirir. Özellikle, xauth'u çağırmaz. Daha fazla bilgi ve bunun nasıl düzeltileceği hakkında bilgi için man sshd'ye bakınız.
Ayrıca, aşağıdaki tanılamalarla rsync-over-ssh'ı kıracak en kısa sürede "-v" kullanmamalısınız:
$ 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) .screenrc'nizde, SSH_AUTH_SOCK'u kanonik konuma geçersiz kılmanız gerekir:
setenv SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
Hangi kabuğu kullandığınızdan bağımsız olarak setenv kullandığınızı unutmayın; Setenv'in kabuk değil ekran sözdizimi olduğunu düşünüyorum.
İlk başta bu yazıdan uyarlanan, işe yaramayan, ancak doğru bir fikri olan çözüm.