Как изменить то, что использует ssh: //?


9

Кажется, на моем Macbook Pro под управлением Sierra есть две разные версии SSH-клиента (10.12.4). Если я сделаю следующее:

$> ssh dev

Работает просто отлично. Однако, если я сделаю следующее:

$> open ssh://dev

Он открывает новый терминал, который затем жалуется на настройки шифрования в моем ssh_configфайле. Исследуя конкретные жалобы, я обнаружил, что при открытии через обработчик протокола используется более старая версия SSH.

Как мне изменить, на какой SSH-клиент перенаправляет протокол?


1
Что вы получаете, когда вы вводите «which ssh» и что вы получаете, когда вы набираете «ps aux | grep ssh» после выполнения второй команды?
Бретил

Какой SSH: /usr/local/bin/ssh Процесс SSH убивает себя после запуска его через второй метод, я не уверен, как бы сохранить его, чтобы увидеть его в списке процессов.
Джошуа Гилман

Ответы:


4

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

Измените схему URL-адреса ssh с помощью RCDefaultApp

  1. Загрузить RCDefaultApp Версия 2.1
  2. Установите панель настроек
  3. Перейдите в Системные настройки> Приложения по умолчанию> URL
  4. Перейти к "SSH"
  5. На правой стороне выберите ваше предпочтительное приложение

Это будет выглядеть очень похоже на этот скриншот:

Снимок экрана RCDefaultApp, показывающий панель настроек


Проблема не в терминальном приложении, а в том, какой двоичный файл SSH вызывается. Я могу изменить приложение, чтобы открыть iTerm вместо терминала, и проблема все еще сохраняется.
Джошуа Гилман

1

Чтобы ответить на ваш вопрос об изменении клиента протокола ssh: //,

В https://superuser.com/a/548122/202319 вы можете изменить, ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plistчтобы открыть любое приложение с зарегистрированным идентификатором при обнаружении ssh: // или другого URL.

Это не идеальное решение, потому что оно все еще требует комплекта приложений или будет использовать Terminal.app (что вы уже видели).

Но вы должны иметь возможность исправить файлы .login или .bashrc, чтобы оболочка Terminal.app по умолчанию в sshлюбом случае использовала ваш предпочтительный вариант .


1
Можете ли вы рассказать об изменениях .loginи .bashrcконфигурации? Проблема не в том, какое терминальное приложение открывается, а в том, какой двоичный файл SSH выполняется. Вызов sshвнутри сеанса терминала вызывает один двоичный файл, но если терминал, открывающий соединение по протоколу, вызывает другой двоичный файл SSH.
Джошуа Гилман

0

У меня нет Mac, чтобы проверить прямо сейчас, но я думаю:

Mac поставляется с ssh клиентом / usr / bin / ssh

Вы установили более новую версию в / usr / local / bin / ssh

Вы можете попробовать удалить / usr / bin / ssh или изменить порядок $ Path, чтобы он сначала выбрал / usr / local / bin / ssh


К сожалению, Apple убила возможность трогать вещи в / usr / bin. Я уже пытался переупорядочить переменную PATH, чтобы поместить мой локальный мусорный контейнер вперед, но кажется, что протокол ssh: // явно вызывает / usr / bin / ssh, так как изменение не сработало.
Джошуа Гилман

Вы можете отключить SIP в режиме восстановления:csrutil disable
Michał Gąsior
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.