Comment utiliser ssh-agent.exe sans cygwin pour la clé privée protégée par mot de passe?

2

Je souhaite accéder à un service SSH avec une clé privée protégée par phrase secrète dans Windows à l'aide de ssh-agent.exe.

Jusqu'à présent, j'ai pu utiliser ssh-agent.exe en modifiant manuellement les paramètres d'environnement de mon compte personnel pour définir une variable d'environnement comme suit:

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

La variable d'environnement ne doit pas être définie dans la zone de commande, sinon un autre processus accédant à ssh.exe risque de ne pas reconnaître la variable d'environnement. Il doit définir dans le compte d'utilisateur Windows.

Le paramètre ci-dessus doit être rétabli après un redémarrage de la machine.

Existe-t-il un moyen efficace d'automatiser le lancement de ssh-agent et de définir SSH_AUTH_SOCK dans le contexte d'une session Windows native?

Chau Chee Yang
la source

Réponses:

0

Lorsque vous exécutez, ssh-agentvous devez enregistrer les variables d’environnement SSH_AUTH_SOCKet SSH_AGENT_PIDdans un fichier, et les utiliser pour voir si l’agent est déjà en cours d’exécution.

Vous devez exécuter cygwin une fois pour démarrer l'agent, mais après cela, il n'est plus nécessaire qu'il soit en cours d'exécution. Cela pourrait probablement être configuré en tant que service.

Pour exécuter ssh-agent.exe en arrière-plan, j'ai ajouté ce qui suit à .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

Cela ne donne pas tout à fait ce que vous recherchez (exécuter ssh-agent sans cygwin), mais cela fonctionne parfaitement pour stocker des clés en mémoire.

Ketola
la source
0

J'ai créé un script assez complexe pour Windows cmd.exe avec un hack de registre qui peut être utilisé pour le rendre automatique dans (la plupart) des shell de commandes jamais lancés.

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

Fondamentalement, il fait la même chose qu’un script Unix et faire de même .. sauf qu’il définit un fichier de socket spécifique à utiliser, au lieu de tenter d’analyser la sortie de ssh-agent ..

Script cmd 100% windows sauf pour ssh, ssh-agent et ssh-add.

Eric Blade
la source