Специфическая задача, которая может потребоваться в случаях, когда у утилиты 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"
Результат можно увидеть на скриншоте:
В будущих версиях OpenSSH ожидается добавление переменной SSH_ASKPASS_REQUIRE
, установив которую в значение force
, ssh
всегда будет запрашивать ключевую фразу, даже если переменная DISPLAY
не задана.
При написании статьи использовалось следующее ПО: