Не удается запустить "ssh -X" в MacOS Sierra
Я только что обновился до MacOS Sierra, и я понял, что больше не могу запускать команду "ssh -X" в Терминале. Раньше он запускал xterm-окна, но теперь, как будто я даже не поставил параметр -X. Он работал абсолютно нормально, пока я не обновился. Помимо перехода от OS X Yosemite к MacOS Sierra, я ничего не изменил в настройке.
EDIT:
Как и было предложено, это то, что я нашел в журналах отладки, которые могут вызвать эту проблему.
debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Ответы
Ответ 1
Мне не нужно было переустанавливать XQuartz, но, основываясь на ответе Мэтта Виджаджи, я придумал уточнение.
-
sudo vi /etc/ssh/ssh_config
(Это конфигурация клиента ssh, а не sshd_config)
- В записи
Host *
добавьте (или добавьте, если необходимо, для каждого узла)
-
XAuthLocation /usr/X11/bin/xauth
(местоположение xauth изменено в Sierra)
-
ServerAliveInterval 60
(заставляет сервер каждые 60 секунд поддерживать ваше ssh-соединение)
-
ForwardX11Timeout 596h
(разрешает ненадежные соединения X11 за 20 минут по умолчанию)
Не нужно перезапускать ssh, кроме, конечно, существующих клиентских соединений ssh.
Похоже, что -Y (доверенное X11) было бы предпочтительнее ненадежного. Если вы перейдете к доверенным, возможно, удалите строку ForwardX11Timeout.
Строка ServerAliveInterval также является необязательной.
Также возможно внести эти изменения в ~/.ssh/config
(файл конфигурации пользователя), но разрешения должны быть правильными.
EDIT: я удалил ForwardX11 и ForwardX11Trusted. Они не нужны, а ForwardX11 менее безопасен и вызывает проблемы для git (или других инструментов, использующих ssh).
Ответ 2
Я заметил, что macOS Sierra сбросила мои настройки X11, чтобы отключить мою программу xAuth. Чтобы снова включить xAuth в macOS Sierra:
- Переустановите X11/xQuartz на предположительно reset любые изменения, сделанные macOS Sierra. Я сделал следующие изменения ниже, хотя кажется, что этого может быть достаточно.
- Загрузите терминал
-
sudo <text editor of your choice> /etc/ssh/sshd_config
- В этом файле раскомментируйте следующие строки и установите для них следующие значения:
-
X11Forwarding yes
-
X11DisplayOffset 10
- [Обновление от 10/07/2017] При переустановке X11/XQuartz, прежде всего, он должен добавить:
XAuthLocation <path_to_your_xauth>
, где моя была в /opt/X 11/bin/xauth. Вероятно, это был золотой шаг, объясняющий, почему переустановка работала.
- Перезапустите ssh через терминал. Я сделал это, запустив:
-
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
-
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Ответ 3
У меня возникают те же проблемы с пересылкой X11 с опцией -X
после обновления до Mac OS X Sierra.
Посмотрите опцию ssh -Y
(надежная пересылка X11). При использовании ssh -Y <host>
все работает для меня.
Ответ 4
Просто добавив одну строку XAuthLocation /usr/X11/bin/xauth
в /etc/ssh/ssh_config
, работая на моем Mac, запустив MacOS Sierra, в ssh на хост Linux и сможете удаленно запускать X-программы Windows и отображать их под XQuartz на моем Mac.
Ответ 5
Моим решением было следующее.
(1) Запустите xquartz
перед тем, как попробовать ssh -X
. В параметрах xquartz я просто включил "Open at login", а затем он всегда работает в фоновом режиме.
(2) Перейдите в меню xquartz
Предпочтения, а в окне "Безопасность" щелкните поле "Разрешить подключения с клиентов".
После этого все работает нормально.
Ответ 6
Просто обновил свой macbook от El Capitan до Sierra. Просто переустановка Xquartz сделала трюк для меня, используя ssh -X [linux server]
Ответ 7
Я целый день искал решения, чтобы понять, что недавняя Sierra не поставляется с XQuartz, установленным https://support.apple.com/en-gb/HT201341. После установки (https://www.xquartz.org/) все работает.
Ответ 8
Если установлен Quartz, все, что необходимо, это добавить строку "X11Trusted yes" в "Host *" в файле/etc/ssh/ssh_config.
Ответ 9
перезапуск XQuartz работал на меня.
Ответ 10
Это старый вопрос, но недавно я столкнулся с той же проблемой на моем Mac с 10.12.6. Переменная DISPLAY
не установлена в терминале, и ssh -X
не работает. Это то, что я сделал, чтобы решить проблему:
-
Переустановите XQuartz с помощью Homebrew: brew cask install xquartz
(может потребоваться опция --forced
)
-
Добавьте launchctl load -w/Library/LaunchAgents/org.macosforge.xquartz.startx.plist
умолчанию (в соответствии с решением, приведенным в этом сообщении Reddit: launchctl load -w/Library/LaunchAgents/org.macosforge.xquartz.startx.plist
-
Перезагрузите систему.
После этого моя переменная DISPLAY
установлена правильно:
$ echo $DISPLAY/private/tmp/com.apple.launchd.mfXFpzZ0gC/org.macosforge.xquartz:0
И пересылка X11 в ssh также работает.