Не удается запустить "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]

Ответ 8

Если установлен Quartz, все, что необходимо, это добавить строку "X11Trusted yes" в "Host *" в файле/etc/ssh/ssh_config.

Ответ 9

перезапуск XQuartz работал на меня.

Ответ 10

Это старый вопрос, но недавно я столкнулся с той же проблемой на моем Mac с 10.12.6. Переменная DISPLAY не установлена в терминале, и ssh -X не работает. Это то, что я сделал, чтобы решить проблему:

  1. Переустановите XQuartz с помощью Homebrew: brew cask install xquartz (может потребоваться опция --forced)

  2. Добавьте launchctl load -w/Library/LaunchAgents/org.macosforge.xquartz.startx.plist умолчанию (в соответствии с решением, приведенным в этом сообщении Reddit: launchctl load -w/Library/LaunchAgents/org.macosforge.xquartz.startx.plist

  3. Перезагрузите систему.

После этого моя переменная DISPLAY установлена правильно:

$ echo $DISPLAY/private/tmp/com.apple.launchd.mfXFpzZ0gC/org.macosforge.xquartz:0

И пересылка X11 в ssh также работает.