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

Я нашел свое решение, даже с индексацией, отключенной, я должен был перейти к "индексации сервиса" и включить "Индексные файлы с неизвестными расширениями", и файлы запустили показ в поисках.

Я использовал Статью 209173 базы знаний Microsoft: Используя "Слово или фраза в файле" критерий поиска не могут работать на ссылку.

33
задан 12 August 2009 в 08:37
8 ответов

Существует несколько способов сделать это, тот, который я предпочитаю, должен передать ssh порт:

Во-первых, соединитесь с машиной B и передайте [localPort] C:22 через B

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

Затем, соединитесь с C от до этого недавно созданного туннеля с помощью [localPort], передав X11

A$ ssh -X -p [localPort] localhost

Теперь мы можем запустить программы X11 на C и сделать, чтобы они отобразились на A

C$ xclock

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

25
ответ дан 28 November 2019 в 19:54
  • 1
    не точно..., если X11Forwarding не включен на сервере C, это won' t работа. это также won' t работают, если каждый не устанавливает AllowTcpForwarding да и GatewayPorts да на сервере B., этот ответ не приемлем вообще –  asdmin 12 August 2009 в 10:02
  • 2
    Вы делаете правильное замечание, я не заметил это, так как я использую debian, на котором X11Forwarding и AllowTcpForwarding включены по умолчанию. GatewayPorts не нужен с тех пор, когда он отключен, SSH все еще слушает на localhost и с именно это мы соединяемся. Вам только был бы нужен он, если бы Вы хотели установить вторую связь через внешний IP для машины A. –  dave 13 August 2009 в 01:48

Это может легко быть выполнено с помощью перенаправления портов:

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

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

7
ответ дан 28 November 2019 в 19:54

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

человек 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
ответ дан 28 November 2019 в 19:54
  • 1
    @AgentK' s и @dave' s предложения только требуют, чтобы X11Forwarding был включен на заключительном хосте, поскольку они используют туннель SSH для обхода промежуточного хоста. Ваше предложение почти определенно почему OP' s метод перестал работать сначала, но это doesn' t означают другой people' s отвечает на " не acceptable" –  Daniel Lawson 12 August 2009 в 12:36
  • 2
    их ответы были дефектными и исправили проблему, не решив его. правильный и полезный ответ рассмотрел бы исходный вопрос и решение его и обеспечение других путей только в случае, если вопрос об оригиналах не разрешим. между прочим, ни один из них не упомянул X11Forwarding, который важен –  asdmin 12 August 2009 в 13:31
  • 3
    В некоторых системах значение по умолчанию является " yes ". –  Brad Gilbert 14 August 2009 в 23:09
  • 4
    Я проверил, это, X11Forwarding включен на B и C, и AllowTcpForwarding установлен на да на B. Но результатом моих команд является то же. И dave' s ответ хорошо работает для меня. –  lexsys 19 August 2009 в 09:02
  • 5
    затем сделайте это, но it' s только средство. также можно запустить ssh с параметра '-v' или попытка повторяет $DISPLAY все вложенные команды ssh для обнаружения этого, где $DISPLAY теряются –  asdmin 19 August 2009 в 09:40

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

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

-Y флаг "Enables trusted X11 forwarding".

1
ответ дан 28 November 2019 в 19:54

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

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

B$ sudo yum install xauth

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

B$ sudo apt-get install xauth
4
ответ дан 28 November 2019 в 19:54

For newer versions opensshd you have to disable X11UseLocalhost for this to work.

You need to do this on Host C's /etc/ssh/sshd_config and restart sshd for this to work:

X11Forwarding yes
X11UseLocalhost no
3
ответ дан 28 November 2019 в 19:54

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

A: ~ / .ssh / config :

 Host C
  Вперед X11 да
  ProxyCommand ssh -W% h:% p B
 

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

A$ ssh C xclock
2
ответ дан 28 November 2019 в 19:54

Вы можете объединить команду -Y/-X с параметром командной строки -J:

A$ ssh -Y user@C -J user@B
C$ xclock

Если у вас больше хостов для прыжка, чем просто сделать следующее:

A$ ssh -Y user@C -J user@B,user@D,...,user@Z
C$ xclock

From man ssh:

-J [user@]host[:port]
     Connect to the target host by first making a ssh connection to
     the jump host and then establishing a TCP forwarding to the
     ultimate destination from there.  Multiple jump hops may be
     specified separated by comma characters.  This is a shortcut to
     specify a ProxyJump configuration directive.

Он был представлен в Версии OpenSSH 7.3 (выпущенной в августе 2016 года).

1
ответ дан 7 April 2020 в 16:40

Теги

Похожие вопросы