Predvoditelev.RU
Заметки

GIT для Windows: запрос ключевой фразы для SSH-ключа через графический интерфейс (GUI)

Специфическая задача, которая может потребоваться в случаях, когда у утилиты ssh нет возможности запросить SSH-ключ через консоль.

Решается задача с помощью переменных окружения SSH_ASKPASS и DISPLAY, которые влияют на поведение ssh:

  • DISPLAY — адрес X11-сервера для вывода графического интерфейса.
  • SSH_ASKPASS — программа, которая будет вызвана для получения ключевой фразы в случае, когда задана переменная DISPLAY и ssh не имеет связанного с ним терминала.

Устанавливаем значения:

SET DISPLAY=localhost:0.0
SET SSH_ASKPASS=C:\Program Files\Git\mingw64\libexec\git-core\git-askpass.exe

С этими значениями в случае, когда ssh не может запросить ключевую фразу в консоли, будет запрашивать его с помощью утилиты, которая идёт в комплекте с GIT для Windows.

Для того, чтобы не задавать значения каждый раз после запуска консоли, можно изменить ssh-команду в GIT:

git config --global core.sshCommand "SSH_ASKPASS=\"C:\Program Files\Git\mingw64\libexec\git-core\git-askpass.exe\" DISPLAY=localhost:0.0 ssh"

Результат можно увидеть на скриншоте:

Запрос пароля для SSH-ключа в GIT через графический интерфейс
Запрос пароля для SSH-ключа в GIT через графический интерфейс

В будущих версиях OpenSSH ожидается добавление переменной SSH_ASKPASS_REQUIRE, установив которую в значение force, ssh всегда будет запрашивать ключевую фразу, даже если переменная DISPLAY не задана.

Полезные ссылки

При написании статьи использовалось следующее ПО:

  • Windows 10
  • OpenSSH 7.7p1
  • GIT for Windows 2.28.0