
Я запускаю сервер Ubuntu в VMWare. И я хотел бы перенаправить X11 с гостевой Ubuntu на хост Mac.
Я установил XQuartz 2.7.9 (xorg-server 1.17.4)
на хост Mac.
И SSH-переадресация в Ubuntu включена.
Затем я попробовал следующее в iTerm:
%> echo $DISPLAY
/private/tmp/com.apple.launchd.mjxVyILVrR/org.macosforge.xquartz:0
%> ssh -X root@xxxx
# echo $DISPLAY
# gnome-terminal
Unable to init server: Could not connect: Connection refused
Failed to parse arguments: Cannot open display
$DISPLAY пуст, и пересылка X11 не работает.
Есть идеи?
решение1
Попробуйте ssh -Y root@xxxx
побегатьxterm
внутриXQuartz вместо iTerm. Это работает?
решение2
откройте /etc/ssh/sshd_config в удаленной системе и установите X11Forwarding yes. Затем перезапустите службу ssh и попробуйте снова
решение3
Поправьте меня, если я ошибаюсь. Вы хотите получить удаленный доступ к своей машине с Ubuntu с вашего Mac, и когда вы подключаетесь к Ubuntu по ssh и пытаетесь выполнить команду echo $DISPLAY, вы получаете пустой ответ. Возможно, следующее решение не сработает в вашем случае, но попробуйте, если то, что вы пытались сделать, похоже на то, что пробовал я.
Как вы уже заметили, сначала нужно найти переменную DISPLAY.
Итак, если вы наберете на вашем Mac как обычный пользователь
echo $DISPLAY
Тогда вы получите что-то вроде следующего (это случай в вашей руке). В любом случае вы все увидите что-то подобное в своих системах.
/private/tmp/com.apple.launchd.0aQYNoXMFK/org.xquartz:0
Тогда попробуйте что-нибудь вроде
xeyes
И теперь вы знаете, что ваш дисплей работает.
Теперь, если вы хотите попробовать то же самое как root (пожалуйста, не набрасывайтесь на меня, ребята, я знаю, что некоторые из вас категорически против доступа root), но если это не сработает, то в командной строке root выполните следующее:
export DISPLAY=/private/tmp/com.apple.launchd.0aQYNoXMFK/org.xquartz:0
То же самое, что вы нашли в своей учетной записи обычного пользователя. Затем скопируйте ваш '.Xauthority' из '/Users/normal user/.Xauthority' в '/var/root/'. Файл .Xauthority уже там, но это его перекроет.
cp /Users/normal user/.Xauthority /var/root/
Конечно, экспорт может работать, но нет ничего плохого в том, чтобы сделать вышеизложенное. Теперь попробуйте следующее.
echo $DISPLAY
И вы должны увидеть следующее
/private/tmp/com.apple.launchd.0aQYNoXMFK/org.xquartz:0
Если вы подключаетесь к Ubuntu по SSH из командной строки обычного пользователя, то вам не нужно выполнять действия, связанные с root, но поскольку я использую root для подключения по SSH к своим системам Ubuntu, мне часто приходится это делать.
Затем, когда вы подключаетесь по ssh к Ubuntu, введите:
echo $DISPLAY
И вы увидите что-то вроде следующего:
localhost:10.0
Вышеуказанное сработает, если вы выполнили все остальные действия, такие как переадресация и т. д.
Опять же, если вы хотите использовать root в Ubuntu и команда «echo $DISPLAY» не выдает никакого ответа, попробуйте следующее (предполагая, что вы находитесь в командной строке root).
cp /home/user name/.Xauthority /root/.Xauthority
Теперь попробуй
echo $DISPLAY
еще раз и вы увидите что-то вроде следующего
localhost:10.0
Ради интереса попробуйте
xeyes
И это работает в моем случае. Надеюсь, это будет полезно и решит проблему, подобную той, что указана выше, или мою, с которой кто-то столкнулся и потратил несколько часов на эту проблему, чеша голову и пытаясь выдернуть волосы, как я :-)).
решение4
Перепробовав множество разных вариантов, вот что мне подошло:
На моем Mac:
Сначала я запускаю xQuartz. Затем я иду в свой терминал и запускаю export DISPLAY=localhost:0
.
На моем удаленном компьютере с Linux:
У меня были проблемы с wayland, поэтому я пошел /etc/gdm/custom.conf
и раскомментировал строку WaylandEnable=false
. Я также установил export XAUTHORITY=$HOME/.Xauthority
. И, наконец, я установил , export QT_QPA_PLATFORM=xcb
что заставило некоторые графические библиотеки работать на Python.
После настройки вы можете подключиться к удаленному серверу по протоколу SSH, ssh -Y remoteserver@IP
и, надеюсь, это сработает.