it-swarm-ru.tech

Как включить пересылку SSH X11 через дополнительный сервер?

У меня есть хосты A, B и C. С хоста A я могу получить доступ только через ssh B. Из B я могу получить доступ к C. Я хочу иметь возможность запускать программы X11 на C и перенаправлять отображение на A.

Я попробовал это:

A $ ssh -X B 
 B $ ssh -X C 
 C $ xclock 
 Ошибка: невозможно открыть дисплей: 

Но это не работает.

34
lexsys

Есть несколько способов сделать это, один из которых я предпочитаю, это переслать порт ssh:

Сначала подключитесь к машине B и перешлите [localPort] на C: с 22 по B

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

Затем подключитесь к C из A через этот вновь созданный туннель, используя [localPort], перенаправив X11

A$ ssh -X -p [localPort] localhost

Теперь мы можем запускать программы X11 на C и отображать их на A

C$ xclock

[localPort] может быть любым портом, который вы еще не слушаете на A, я часто использую 2222 для простоты.

26
dave

Это легко сделать с помощью переадресации портов:

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

Порт localhost: 2022 перенаправляется на C: 22 через B SSH на C через localhost: 2022 Используйте X как обычно

7
AgentK

Предполагая, что проблема заключается в том, что на средней машине нет X, но в остальном он настроен на пересылку X11, просто установите xauth.

в системе на основе yum (Fedora, redhat, centos):

B$ Sudo yum install xauth

в системе на основе apt (debian, ubuntu):

B$ Sudo apt-get install xauth
4
Jayen

Для более новых версий opensshd вы должны отключить X11UseLocalhost, чтобы это работало.

Вы должны сделать это на хосте C /etc/ssh/sshd_config и ​​перезапустите sshd, чтобы это работало:

X11Forwarding yes
X11UseLocalhost no
3
Brad Allison

Вы не можете переслать отображение X11, если у вас отключен X11Forwarding в любом используемом sshd.

man sshd_config:

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

Вы должны убедиться, что X11Forwarding включен в пункте назначения и все промежуточные sshds, которые вы используете.

Небольшая подсказка: вы должны попытаться использовать VNC, переадресация дисплея X11 требует довольно большой полосы пропускания.

2
asdmin

Если вы часто переходите от A к C, вы можете настроить B как прокси:

A:~/.ssh/config:

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

тогда это просто

A$ ssh C xclock
2
Jayen

Вы пробовали с

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

Флаг -Y "Включает доверенную пересылку X11".

1
pyhimys