Windows-Subsystem für Linux – SSH-Agent freigeben?

Windows-Subsystem für Linux – SSH-Agent freigeben?

Ich verwende Ubuntu 16.04 in einer Windows Subsystem for Linux (WSL)-Shell unter Windows 10. Von einem Terminal aus kann ich den SSH-Agenten starten und ihn während der Lebensdauer des Terminals viele Male verwenden. Ich kann den SSH-Agenten von PS aus und auch vom Windows 10-Task-Manager aus laufen sehen.

Wenn ich jedoch ein zweites WSL-Bash-Terminal über das Startmenü starte, erkennt es den SSH-Agenten nicht. Seltsamerweise funktioniert es, wenn ich ein zweites Terminal über die Windows-Befehlszeile starte. Eine mögliche Problemumgehung wäre, neue Bash-Fenster aus dem vorhandenen zu öffnen, aber ich weiß auch nicht, wie das geht.

Gibt es dafür eine Lösung?

Antwort1

Sie können Ihre .bashrc-Datei ändern, um einen vorhandenen, laufenden SSH-Agenten zu finden.

Ich verwende etwas basierend auf demKern

# ssh-agent configuration
if [ -z "$(pgrep ssh-agent)" ]; then
    rm -rf /tmp/ssh-*
    eval $(ssh-agent -s) > /dev/null
else
    export SSH_AGENT_PID=$(pgrep ssh-agent)
    export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi

# optional... potentially annoying
#if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
#    ssh-add
#fi

Antwort2

Ich habe das gerade aufgrund einer weiteren neuen Antwort bemerkt, aber die meisten Antworten hier deuten auf eine Art Anpassung des Startskripts hin (z. B. ~/.bashrc). Anstatt das Rad neu zu erfinden, würde ich vorschlagenkeychain.

Nach der Installation (verfügbar in den meisten Distro-Repos, z. B. sudo apt install keychain) fügen Sie einfach Folgendes hinzu:

eval $(keychain --eval --agents ssh id_rsa)

... zu Ihrem . Dadurch werden Ihre und Variablen für die aktuelle Sitzung ~/.bashrckorrekt so eingestellt, dass sie auf die vorhandene verweisen oder bei Bedarf eine neue starten. Auf diese Weise wird nur eine freigegebene Sitzung für alle offenen WSL-/Terminalsitzungen verwendet.SSH_AGENT_PIDSSH_AUTH_SOCKssh-agentssh-agent

Lustiger Leckerbissen – keychainwurde ursprünglich von Daniel Robbins geschrieben, der auch Gentoo Linux gründete.

Antwort3

Vielleicht nicht: Es klingt, als ssh-agentwürde es auf die übliche Weise ausgeführt, wobei es der übergeordnete Prozess Ihrer Shell ist. Dieses andere Fenster hat seine eigene Hierarchie von übergeordneten/untergeordneten Prozessen, die nicht mit dem von Ihnen verwendeten Fenster verknüpft ist.

Eine Möglichkeit zur ArbeitmitDiese Funktion wird in dem Fenster ssh-agentausgeführt , in dem Sie den Agenten gestartet haben. Diese Screen/Tmux-Fenster sind ebenfalls untergeordnete Elemente des Prozesses und können problemlos mit ihm kommunizieren.screentmuxssh-agent

Antwort4

Es gibt jetzt. Installieren Sie die neueste Version vonOpenSSH für Windowsund erhalten Sie dann dieSSH-Agent-WSLHelfer. Folgen Sie den Anweisungen, und Sie erhalten ganz einfach eine funktionierende Möglichkeit, Anmeldeinformationen zwischen WSL und Windows zu teilen! Es funktioniert wie am Schnürchen!

verwandte Informationen