2

Я хотел бы получить доступ к SSH-сервису с защищенным паролем частным ключом в Windows, используя ssh-agent.exe.

До сих пор я мог использовать ssh-agent.exe, изменив настройки среды в своей домашней учетной записи вручную, чтобы установить переменную среды следующим образом:

SSH_AUTH_SOCK = %TEMP%\ssh-Co312dEaE\agent.1208

Переменная среды не должна указываться в поле cmd, иначе другой процесс, обращающийся к ssh.exe, может не распознать переменную среды. Это должно установить в учетной записи пользователя Windows.

Приведенную выше настройку необходимо повторить после перезагрузки машины.

Есть ли хороший способ автоматизировать запуск ssh-agent и установку SSH_AUTH_SOCK в контексте родного сеанса Windows?

2 ответа2

0

Когда вы запускаете ssh-agent вы должны сохранить переменные среды SSH_AUTH_SOCK и SSH_AGENT_PID в файл и использовать их, чтобы узнать, запущен ли агент.

Вам нужно запустить cygwin один раз, чтобы запустить агент, но после этого он не должен запускаться. Вероятно, это может быть настроено как услуга.

Для запуска ssh-agent.exe в фоновом режиме я добавил следующее .bashrc

#
# Store env variables
run_ssh_agent="${HOME}/.ssh/agent-for-${HOSTNAME}.pid"
#
# Include env variables if they exist
[ -f "$run_ssh_agent" ] && . "$run_ssh_agent" >/dev/null 2>&1
#
# Test if agent is running
if kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
    #
    # Agent is running
    echo Agent pid $SSH_AGENT_PID
else
    #
    # Agent is not running, launch it and store env variables
    ssh-agent -s > "$run_ssh_agent"
    . "$run_ssh_agent"
    #
    # Add private keys
    ssh-add
fi
#
# List loaded identities
ssh-add -l

Это не совсем то, что вы ищете (запуск ssh-agent без cygwin), но оно отлично работает для хранения ключей в памяти.

0

Я создал довольно сложный скрипт для Windows cmd.exe вместе с хаком реестра, который может быть использован для автоматического запуска в (большей части) когда-либо запущенной командной оболочке.

https://github.com/ericblade/ssh-agent-cmd

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

100% сценарий windows cmd за исключением ssh, ssh-agent и ssh-add.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .