Специфическая задача, которая может потребоваться в случаях, когда у утилиты ssh
нет возможности запросить SSH-ключ через консоль.
Решается задача с помощью переменных окружения SSH_ASKPASS
и DISPLAY
, которые влияют на поведение ssh
:
DISPLAY
— адрес X11-сервера для вывода графического интерфейса.SSH_ASKPASS
— программа, которая будет вызвана для получения ключевой фразы в случае, когда задана переменная DISPLAY
и ssh
не имеет связанного с ним терминала.Устанавливаем значения в командной строке Windows:
SET DISPLAY=localhost:0.0
SET SSH_ASKPASS=C:\Program Files\Git\mingw64\libexec\git-core\git-askpass.exe
... или в PowerShell:
[Environment]::SetEnvironmentVariable("DISPLAY", "localhost:0.0")
[Environment]::SetEnvironmentVariable("SSH_ASKPASS", "C:\Program Files\Git\mingw64\libexec\git-core\git-askpass.exe")
С этими значениями в случае, когда ssh
не может запросить ключевую фразу в консоли, будет запрашивать его с помощью утилиты, которая идёт в комплекте с GIT для Windows.
Результат можно увидеть на скриншоте:
В будущих версиях OpenSSH ожидается добавление переменной SSH_ASKPASS_REQUIRE
, установив которую в значение force
, ssh
всегда будет запрашивать ключевую фразу, даже если переменная DISPLAY
не задана.
Есть различные варианты автоматической установки значений DISPLAY
и SSH_ASKPASS
.
Добавляем установку значений в 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"
В cmder можно указать значения в файле config\user-profile.cmd
(в папке утилиты), который автоматически выполняется при старте консоли:
Добавляем установку значений в файл конфигурации Microsoft.PowerShell_profile.ps1
. Местонахождение файла можно узнать выведя значение переменной $PROFILE
в PowerShell. Обычно этот файл находится в домашней директории по адресу ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.
При написании статьи использовалось следующее ПО: