почему не будет x11 отобразить работу посредством входа в систему ssh?

Один путь состоял бы в том, чтобы определить псевдонимы для каждой команды мерзавца. Вы могли все еще выполнить обычные команды оболочки; если это не желаемо, установить PATH к несуществующему каталогу. Если Вы хотите выполнить команду оболочки а не команду мерзавца, поместите обратную косую черту перед командой (например. \rm foo удалить файл).

git_commands=$(COLUMNS=2 git --help --all | sed -n -e '1,/^----/d' -e '1,/^$/p')
for c in $git_commands; do
  alias "$c=git $c"
done

В zsh у Вас даже будет завершение, если Вы будете иметь complete_aliases опция установлена. Я не знаю об ударе.

22
25.06.2014, 02:37
5 ответов

Убедитесь, что у вас есть DISPLAY-переменная в окружении cygwin:

export DISPLAY=:0.0

после соединения с SSH, проверьте, знает ли эта оболочка также правильную DISPLAY-переменную с:

echo $DISPLAY
16
27.01.2020, 19:42

Спасибо @jensd, @unxnut за помощь. на основании ваших комментариев я смог разобраться в проблеме.

Решение состояло из двух шагов:

  1. переменная DISPLAY должна быть правильно установлена.
  2. при работе на удаленном сервере переключатель -X должен быть включен

в моих предыдущих попытках отсутствовало одно или оба из этих условий.

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

case1

моя локальная машина не будет иметь установленного значения переменной DISPLAY. А затем я буду ssh на удаленный сервер с ключом -X, а затем попробую выполнить xclock.

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

так как вы видите ошибку Error: Невозможно открыть дисплей: отображается на терминале удаленного сервера.

case2

на этот раз, на локальной машине, я задам переменную DISPLAY. Но когда я буду ssh'ing, я не буду включать переключатель -X. В результате получится сбой:

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

при запуске видно, что я правильно установил переменную DISPLAY. Но даже в этом случае, после ssh'ing(без ключа -X) xclock не выполняется.

*Иной результат с setenv | grep DISPLAY можно увидеть здесь(сравнить с case1). в случае2 результат просто пустой. с другой стороны, результат case1 в этой командной строке - DISPLAY: неопределенная переменная..... Не знаю, как вызвана эта разница, но мне кажется, что она связана с тем, выполнили ли вы условие 1. или 2.

case3

на этот раз я правильно укажу переменную DISPLAY на локальной машине, а также ssh на удалённый сервер с включённым ключом -X.

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

с этой настройкой, xclock работает!! вот скриншот, чтобы доказать, что я не вру. enter image description here xclock успешно показан на моей локальной машине.

Еще раз проверьте результат setenv | grep DISPLAY в этом случае. Теперь он показывает DISPLAY=localhost:11.0. Из того, что я знаю, это связано с MIT-MAGIC-COOKIE в файле .Xauthority, но так как я знаю об этом не так уж много, я не буду углубляться.

Вывод: из трех приведенных выше случаев мы можем подтвердить, что для корректного отображения удаленной X Windows, как 1. должна быть правильно установлена переменная DISPLAY на локальной машине, так и 2. ssh -X переключатель. Конечно, удаленный сервер должен разрешать переадресацию X11.

.
7
27.01.2020, 19:42

Я только что столкнулся с этой проблемой при подключении к автономному серверу RHEL7.

Вам нужен пакет xorg-x11-xauth, установленный на вашем хосте, чтобы переменная DISPLAY была установлена ​​и была должным образом авторизована.

Надеюсь, я когда-нибудь кое-кого спас.

18
27.01.2020, 19:42

Еще один случай, с которым я столкнулся, когда ssh отказывается переносить настройку переменной DISPLAY даже при использовании ssh -X:

$ ssh -X foo
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
...
Add correct host key in /home/jdoe/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/jdoe/.ssh/known_hosts:71
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
X11 forwarding is disabled to avoid man-in-the-middle attacks.

Если вы тот, кто читает полное сообщение, которое ssh выплевывает вам в ответ, ответ будет очевиден для вас. Однако, если вы похожи на меня и не всегда читаете очень длинные сообщения, которые отображаются при подключении по ssh к удаленному серверу, потому что системный администратор установил уже длинное MOTD (Сообщение дня )или подобное предупреждение баннер всякий раз, когда вы входите в систему, вы можете легко пропустить это сообщение!

Исправление, конечно,(после того, как вы убедились, что действительно входите в систему, о которой вы думаете!! ), чтобы отредактировать файл «известные _хосты», как было предложено в полезном предупреждающем сообщении, которое вы (я )так старательно проигнорировал при входе в систему. Вы можете столкнуться с этой ситуацией, когда у вас есть сеть или система администраторы, которые чувствуют необходимость каждые несколько месяцев перенастраивать безопасность работы сети (? ).

1
27.01.2020, 19:42

У меня была аналогичная проблема с системой на основе Debian (proxmox ), и проблема была из-за того, что xorg не был установлен. После apt-get install xorgfirefox заработал.

0
28.01.2021, 09:23

Теги

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