Не удается запустить & ldquo; ssh -X & rdquo; на MacOS Сьерра

Я только что обновился до MacOS Sierra и понял, что больше не могу запускать команду «ssh -X» в Терминале. Раньше он запускал xterm windows, но теперь я даже не включил опцию -X. Он работал абсолютно нормально прямо перед обновлением. Кроме перехода с OS X Yosemite на MacOS Sierra, я ничего не изменил в настройке.

РЕДАКТИРОВАТЬ:

Как и предполагалось, это то, что я нашел в журналах отладки, которые могут быть причиной этой проблемы.

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
29
задан 21.09.2016, 21:02

10 ответов

Мне не нужно было переустанавливать XQuartz, но, основываясь на ответе Мэтта Виджаи, я придумал уточнение.

  • sudo vi /etc/ssh/ssh_config (Это конфигурация клиента ssh, а не sshd_config)
    • Под записью Host * добавьте (или добавьте, где это необходимо для каждого хоста)
      • XAuthLocation /usr/X11/bin/xauth (Местоположение xauth изменилось в Сьерре)
      • ServerAliveInterval 60 (Пингует сервер каждые 60 секунд, чтобы поддерживать соединение ssh)
      • ForwardX11Timeout 596h ( Разрешает ненадежные соединения X11 за пределами 20-минутного значения по умолчанию)

    Нет необходимости перезапускать ssh, кроме, конечно, существующих клиентских соединений ssh.

    Похоже, что -Y (доверенный X11) предпочтительнее, чем ненадежный. Если вы переключитесь на доверенный, строку ForwardX11Timeout, вероятно, можно удалить.

    Строка ServerAliveInterval также является необязательным предпочтением.

    Также возможно внести эти изменения в ~/.ssh/config (файл конфигурации пользователя), но разрешения должны быть правильными.

    РЕДАКТИРОВАТЬ: я удалил ForwardX11 и ForwardX11Trusted. Они не нужны, и ForwardX11 менее безопасен и вызывает проблемы для git (или других инструментов, использующих ssh).

47
ответ дан 11.10.2019, 17:35
  • 1
    @R.Martinho: I' m вполне уверенный резерв является ненужным, потому что реализации библиотеки единого стандарта отправят перегрузкам, специализирующимся для итераторов произвольного доступа, таким образом, они смогут использовать memmove так или иначе. – sehe 30.11.2011, 13:21

Я заметил, что macOS Sierra сбросил мои настройки X11, чтобы отключить мою программу xAuth. Чтобы снова включить xAuth в macOS Sierra:

  1. Переустановите X11 / xQuartz, чтобы предположительно сбросить любые изменения, сделанные macOS Sierra. Ниже я также внес следующие изменения, хотя, похоже, этого может быть достаточно.
  2. Загрузите терминал
  3. sudo <text editor of your choice> /etc/ssh/sshd_config
  4. В этом файле раскомментируйте следующие строки и установите для них следующие значения:
    • X11Forwarding yes
    • X11DisplayOffset 10
    • [Обновление от 10/07/2017] При переустановке X11 / XQuartz, прежде всего, следует добавить: XAuthLocation <path_to_your_xauth>, где моя была в / opt / X11 / bin / Xauth. Вероятно, это был золотой шаг, который объяснил, почему переустановка работала.
  5. Перезапустите ssh через терминал. Я сделал это, запустив:
    • sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    • sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
26
ответ дан 11.10.2019, 17:35
  • 1
    Спасибо @councellorben - ModelState. Ясный действительно удаляет те ошибки (и целый ModelState. Набор ключей), но TryModelValidate doesn' t, кажется, повторно заполняют ModelState. Это, кажется, ничего не делает? например, Если я don' t удаляют незаконный объект, затем называют.Clear, затем TryValidateModel, I' m оставленный с пустым ModelState, а не тем, который соответствует " предъясный () " версия. – Merenzo 07.12.2019, 09:07

У меня те же проблемы с пересылкой X11 с опцией -X после обновления до Mac OS X Sierra.

Посмотрите на опцию ssh -Y (доверенная переадресация X11). При использовании ssh -Y <host> у меня все работает.

11
ответ дан 11.10.2019, 17:35
  • 1
    В моем проекте MVC4 я по ошибке думал, что TryValidateModel () ничего не делал... однако it' s просто игнорирующий вложенные объекты (согласно stackoverflow.com/questions/4465432 ). В моем проекте MVC4 TryValidateModel () восстанавливает те ключи, которые являются (a) в объекте верхнего уровня и (b) только если у них есть ошибки проверки. Таким образом, это смотрит на меня как этот ответ, является правильным. Действительно ли there' s повреждающееся изменение в MVC4 другая история:) – Merenzo 07.12.2019, 09:08

Просто добавление одной строки XAuthLocation /usr/X11/bin/xauth к /etc/ssh/ssh_config работает на моем Mac с MacOS Sierra, чтобы подключиться к ssh на хост Linux и иметь возможность удаленно запускать программы для X Windows и отображать их под XQuartz на моем Mac.

5
ответ дан 11.10.2019, 17:35
  • 1
    Nevermind.AddToModelState () является ответом! – Mir 07.12.2019, 09:07

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

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

  2. Добавьте модуль запуска XQuartz к системе по умолчанию (следуя решению, приведенному в этом сообщении 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 также работает.

5
ответ дан 11.10.2019, 17:35
  • 1
    можно использовать метод перегрузки TryValidateModel TryValidateModel (модель. NestedModel, " NestedModel") – pirimoglu 07.12.2019, 09:08

Только что обновил мой макбук с Эль Капитана до Сьерры. Простая переустановка Xquartz справилась со мной, используя ssh -X [linux server]

2
ответ дан 11.10.2019, 17:35
  • 1
    I' m пытающийся заставить атрибуты DataAnnotation проверять снова, но они don' t кажутся после OnModelUpdated. Какие-либо идеи? – xr280xr 07.12.2019, 09:07

Мое решение этого было следующее.

(1) Запустите xquartz, прежде чем пытаться ssh -X. В опциях xquartz я просто включил «Открыть при входе в систему», а затем он всегда работает в фоновом режиме.

(2) Перейдите в меню «Предпочтения» xquartz и в окне «Безопасность» установите флажок «Разрешить подключения от клиентов».

После этого все работает нормально.

5
ответ дан 11.10.2019, 17:35
  • 1
    Это брало меня так долго, чтобы узнать, как правильно сделать это. Спасибо за сохранение меня другой день горя. – Mike Caputo 07.12.2019, 09:08

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

1
ответ дан 11.10.2019, 17:35
  • 1
    Но что относительно типов, что я получил с теми двумя функциями? Как я сказал, res.write не печатает весь HTML на экране или браузере, но res.send делает. – user3275959 13.02.2014, 22:38

Я потратил целый день на поиски решения, только чтобы понять, что последняя версия Sierra не поставляется с установленным XQuartz https://support.apple.com/en-gb/HT201341 . После установки ( https://www.xquartz.org/ ) все работает.

1
ответ дан 11.10.2019, 17:35
  • 1
    Я создал и применил пользовательский образцовый редактор связей к родительской модели представления. Я должен был применить его к дочернему VM, который непосредственно содержал проверку. – xr280xr 07.12.2019, 09:07

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

0
ответ дан 11.10.2019, 17:35
  • 1
    Вы могли отправить свой код для res.send ()? – Jim Jeffries 13.02.2014, 22:49

Теги

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