Jak używać ssh-agent.exe bez cygwin dla chronionego hasłem klucza prywatnego?

2

Chciałbym uzyskać dostęp do usługi SSH z zabezpieczonym hasłem kluczem prywatnym w systemie Windows przy użyciu ssh-agent.exe.

Do tej pory udało mi się wykorzystać ssh-agent.exe, zmieniając ręcznie ustawienia środowiska na moim koncie domowym, aby ustawić zmienną środowiskową w następujący sposób:

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

Zmienna środowiskowa nie powinna być ustawiona w polu cmd, w przeciwnym razie inny proces uzyskujący dostęp do ssh.exe może nie rozpoznać zmiennej środowiskowej. Musi być ustawiony na koncie użytkownika Windows.

Powyższe ustawienie należy powtórzyć po ponownym uruchomieniu komputera.

Czy jest jakiś dobry sposób na automatyzację uruchamiania ssh-agent i ustawienie SSH_AUTH_SOCK w kontekście rodzimej sesji Windows?

Chau Chee Yang
źródło

Odpowiedzi:

0

Kiedy uciekasz ssh-agent powinieneś zapisać SSH_AUTH_SOCK i SSH_AGENT_PID zmienne środowiskowe do pliku i użyj ich, aby sprawdzić, czy agent jest już uruchomiony.

Aby uruchomić agenta, musisz uruchomić cygwin raz, ale potem nie musi być uruchomiony. Może to być również skonfigurowane jako usługa.

Aby uruchomić ssh-agent.exe w tle, dodałem następujące polecenie do .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

Nie do końca spełnia to, czego szukasz (uruchamiając ssh-agent bez cygwin), ale działa doskonale do przechowywania kluczy w pamięci.

Ketola
źródło
0

Stworzyłem całkiem zaangażowany skrypt dla cmd.exe Windows wraz z hackiem rejestru, który może być użyty do automatycznego uruchomienia go w (najczęściej) uruchomionej powłoce poleceń.

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

Zasadniczo robi to podobnie jak skrypt uniksowy, aby zrobić to samo ... poza tym, że ustawia konkretny plik gniazda, który ma być użyty, zamiast próbować analizować dane wyjściowe ssh-agenta.

100% skrypt Windows cmd z wyjątkiem ssh, ssh-agent i ssh-add.

Eric Blade
źródło