
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 ~/.bashrc
korrekt 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_PID
SSH_AUTH_SOCK
ssh-agent
ssh-agent
Lustiger Leckerbissen – keychain
wurde ursprünglich von Daniel Robbins geschrieben, der auch Gentoo Linux gründete.
Antwort3
Vielleicht nicht: Es klingt, als ssh-agent
wü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-agent
ausgefü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.screen
tmux
ssh-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!