SSH X11'in ek sunucu üzerinden iletilmesi nasıl sağlanır?


33

A, B ve C ana bilgisayarlarına sahibim. AI ana bilgisayarından yalnızca ssh ile erişebilir. BI'dan C erişimine erişebilir.

Bunu denedim:

Bir $ ssh -XB
B $ ssh -XC
C $ xclock
Hata: Ekran açılamıyor:

Fakat işe yaramıyor.

Yanıtlar:


25

Bunu yapmanın birkaç yolu var, tercih ettiğim ssh portunu yönlendirmek:

İlk önce, makine B'ye bağlayın ve [localPort] 'ı C: 22 - B arasında iletin

A$ ssh -L [localPort]:C:22 B

Daha sonra, [localPort] kullanarak, X11 ileterek bu yeni oluşturulan tünelden A'dan C'ye bağlanın

A$ ssh -X -p [localPort] localhost

Şimdi X11 programlarını C üzerinde çalıştırabiliriz ve A üzerinde göstermelerini sağlayabiliriz.

C$ xclock

[localPort] zaten A'da dinlemediğiniz herhangi bir bağlantı noktası olabilir, basitlik için genellikle 2222 kullanıyorum.


3
tam olarak değil ... eğer X11Forwarding C sunucusunda etkin değilse, çalışmaz. Ayrıca bir kişi AllowTcpForwarding yes ve GatewayPorts yes server B üzerinde kurulmadıkça da çalışmaz. Bu cevap kesinlikle kabul edilmez
asdmin 12.01

İyi bir noktaya değiniyorsunuz, X11Forwarding ve AllowTcpForwarding öğelerinin varsayılan olarak etkin olduğu debian kullandığım için bunu farketmedim. Devre dışı bırakıldığında, SSH hala yerel ana bilgisayarı dinler ve ağa bağlandığımız şey budur. Makine A. için harici IP yoluyla ikinci bağlantı kurmak istiyorsa sadece onu gerekir
Dave

1. adımda bana B ana bilgisayarının şifresini sormadı ve sonunda C ana bilgisayarına bağlandım. Başka bir pencerede 2. adımı denedim ve "ssh_exchange_identification: Bağlantı uzak ana bilgisayar tarafından kapatıldı" alıyorum.
msb

ssh: host'a bağlan ... port 22: İlk komutu yerine getirirken bağlantı reddedildi
Rodrigo

7

Bu, port yönlendirme kullanarak kolayca gerçekleştirilebilir:

A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock

Port localhost: 2022, B SSH ile C: 22'ye, localhost: C ile iletilir: 2022 Normal olarak X kullanın


2
Bu, B'nin (ağ geçidi) doğru sshd yönlendirme seçeneklerinin etkin olmaması durumunda başka bir yerde belirtilen aynı nedenlerle çalışmayacaktır.
g33kz0r

şifremi istemedim, garip olan B'yi barındırmak; ve değil iş, şu hata mesajını aldım vermedi "kanal 2: açık başarısız oldu: idari yasak: açık başarısız ssh_exchange_identification: Bağlantı uzak ana bilgisayar tarafından kapatıldı"
msb

4

Sorunu varsayalım, orta makinede X yoktur, ancak X11'in iletilmesine izin vermek için yapılandırılmışsa, sadece xauth'u kurun.

yum tabanlı bir sistemde (fedora, redhat, centos):

B$ sudo yum install xauth

apt tabanlı bir sistemde (debian, ubuntu):

B$ sudo apt-get install xauth

Yay-başsız ahududu pi için mükemmel.
cmc

@cmc veya ssh kullanarak bir vpn.
Jayen

@ cmc yumbir pi üzerinde var mı?
Jayen

hayır-sudo apt-get install xauth
cmc 12

3

Yeni sürümler opensshd X11UseLocalhostiçin bunun çalışması için devre dışı bırakmanız gerekir .

Bunu Host /etc/ssh/sshd_configC'lerde yapmanız ve bunun çalışması için sshd'yi yeniden başlatmanız gerekir:

X11Forwarding yes
X11UseLocalhost no

2

Kullanmakta olduğunuz herhangi bir sshd'de X11Forwarding devre dışı bırakılmışsa, X11 ekranını iletemezsiniz.

adam sshd_config:

X11Forwarding
  Specifies whether X11 forwarding is permitted. The argument must be “yes”
  or “no”.  The default is “no”.

Hedefte ve kullandığınız tüm ara kodlarda X11Forwarding'in etkin olduğundan emin olmalısınız .

Sadece küçük bir ipucu: VNC kullanmaya çalışmalısınız, X11 ekran iletimi oldukça bant genişliği tüketiyor.


@ AgentK ve @ dave'nin önerileri, ara konakçı baypas etmek için bir SSH tüneli kullandıklarından, son ana bilgisayarda yalnızca X11Forwarding'in etkinleştirilmesini gerektirir. Öneriniz, neredeyse kesinlikle OP'nin yönteminin ilk başta başarısız olmasının nedenidir, ancak bu, diğer kişilerin cevaplarının "kabul edilemez" olduğu anlamına gelmez
Daniel Lawson,

Cevapları kusurluydu ve sorunu çözmedi, sorunu çözdü. Doğru ve faydalı bir cevap, asıl soruyu ve çözmeyi düşünür ve yalnızca asıl sorunun çözülememesi durumunda başka yollar sunar . bu arada, ikisi de esastır X11Forwarding, söz
asdmin

Bazı sistemlerde varsayılan " yes" dır .
Brad Gilbert

X11Forwarding’in B ve C’de etkin olduğunu ve AllowTcpForwarding’in B üzerinde evet olarak ayarlandığını kontrol ettim, ancak komutlarımın sonucu aynı. Dave'in cevabı benim için iyi çalışıyor.
lexsys

o zaman bunu yap, ama bu sadece bir çare. Ayrıca
ssh'yi

2

Sık sık A'dan C'ye giderseniz, B'yi proxy olarak yapılandırabilirsiniz:

A:~/.ssh/config:

Host C
  ForwardX11   yes
  ProxyCommand ssh -W %h:%p B

o zaman sadece:

A$ ssh C xclock

1

Denedin mi

A$ ssh -Y B
B$ ssh -Y C
C$ xlclock

-Y bayrağı "Güvenilir X11 iletmeyi etkinleştirir."


Aynı sonuç.
lexsys

Bu benim için çalıştı, ancak yalnızca X11
Rodrigo
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.