Yanıtlar:
X11 yönlendirme etkinken ikinci bir bağlantı oluşturabilir ve ardından DISPLAY
ortam değişkenini ilk ikinci bağlantıdan da kullanabilirsiniz .
1. pencerede:
$ ssh user@host
user@host$ ...
2. pencerede:
$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0
1. pencereye dön:
user@host$ export DISPLAY=localhost:10.0
user@host$ xterm
Maalesef, ssh
X11 (veya diğer) iletimlerini başlattığı sürece / oturuma veya uzaktaki makinede çalıştığı kullanıcıya (örneğin, kimlik bilgilerini kontrol ederek / çıkışını kullanarak Unix soketlerini kullanarak veya ad alanlarını kullanarak) içerecek bir şey yapmaz. ve bu yönlendirmeler uzak makinedeki herhangi birinin bağlayabileceği basit tcp dinleme soketleridir; X11 iletiminin tüm güvenliği X11 kimlik doğrulamasına dayanır.
sshd_config(5)
Manpage söz edilmiştir:
X11 iletmeyi devre dışı bırakmak, kullanıcıların her zaman kendi ileticileri yükleyebileceği için kullanıcıların X11 trafiğini iletmesini engellemez.
İşte bunu elle nasıl yapabilirsiniz.
Öncelikle, x11 auth mekanizmasını [1] atlayan herhangi bir ana bilgisayar veya kullanıcı tabanlı erişim denetimini devre dışı bıraktığınızdan emin olun:
$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect
Ardından DISPLAY=:0
yerel makinedeki auth bilgilerini gösterin :
$ xauth list :0
ohzd/unix:0 MIT-MAGIC-COOKIE-1 a86982ddce0c1e1c1a8c5e8b2846e43b
X11 iletmeden uzaktaki makineye bağlanın:
$ ssh user@hzy64
user@hzy64's password:
[motd snipped]
Komut satırını açın ve ~C
bağlantı noktasından 6000+43
ekrana karşılık gelen unix soketine uzak bir yönlendirme ekleyin :0
:
hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.
$DISPLAY
Envvar'ı ayarlayın ve yerelden uzak makineye auth bilgilerini ekleyin:
hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth: file /home/user/.Xauthority does not exist
Şimdi gitmeye hazırsın:
hzy64$ xterm
[1] yanlış yönlendirilmiş bir hata düzeltmesi nedeniyle , kullanıcı tabanlı erişim kontrolü Debian üzerinden varsayılan olarak açıktır /etc/X11/Xsession.d/35x11-common_xhost-local
. Daha da kötüsü, XWayland'da varsayılan olarak devre dışı bırakılamayan tek kişidir . X11 protokolünün proxy'leri (örneğin. xscope
), X11 sunucusuna bir boşluk açmak istemiyorsa, kendi x11 auth cookie kontrolünü (ssh'in yaptığı gibi) yapmak zorundadır.
-X
biraz daha iyi -Y
olurdu, değil mi?
-X
, yalnızca -Y
. insanlar fark etmiyorlar çünkü birçok sistemde (örneğin, debian) varsayılan ForwardX11Trusted
olarak ayarlanmış yes
ve -X
ve -Y
seçenekler eşdeğerdir ;-)
change $DISPLAY to
. Geçerli soru başlığı arama sonuçlarında tam olarak görüntülenemiyor ve $ DISPLAY değerini değiştirmek, sorunun bir parçası değil, cevabın bir parçası.