Bir makineye 'X' olmadan 'ssh' yaptıktan sonra, 'ssh-X' gibi çalışmasını sağlamak için '$ DISPLAY' değiştirmek mümkün mü?


22

Bir makineye sshçıkmadan sonra -X, bazı ayarları (örneğin $DISPLAY) olduğu gibi değiştirmek için değiştirmek mümkün müdür ssh -X? Eğer değilse, sebebi nedir? Teşekkürler.


Dışarıda bırakarak soru başlığını kısaltmanızı öneririm 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ı.
Dmitry Grigoryev

Yanıtlar:


33

X11 yönlendirme etkinken ikinci bir bağlantı oluşturabilir ve ardından DISPLAYortam 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, sshX11 (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.

X11 Elle Yönlendirme

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=:0yerel 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 ~Cbağlantı noktasından 6000+43ekrana karşılık gelen unix soketine uzak bir yönlendirme ekleyin :0:

hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.

$DISPLAYEnvvar'ı 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.


1
Güvenliği önemsiyorsan, -Xbiraz daha iyi -Yolurdu, değil mi?
Stephen Kitt

13
birçok (en çok?) X11 programı birlikte çalışmaz -X, yalnızca -Y. insanlar fark etmiyorlar çünkü birçok sistemde (örneğin, debian) varsayılan ForwardX11Trustedolarak ayarlanmış yesve -Xve -Yseçenekler eşdeğerdir ;-)
mosvy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.