linux 的 Windows 子系统中的 ssh-agent 重置 (WSL)

ssh-agent reset in Windows Subsystem for linux (WSL)

我正在尝试在 WSL 下使用 ssh-agent,但是在脚本 运行

之后 SSH 参数被擦除

来自 .bashrc(精简版)

eval $(ssh-agent)
ssh-add

ssh-add -l
echo "SSH_AGENT_PID is" $SSH_AGENT_PID
echo "SSH_AUTH_SOCK is" $SSH_AUTH_SOCK

提示输入密码然后显示指纹和相关变量

在提示(或单独的脚本)之后直接运行ning

ssh-add -l
echo "SSH_AGENT_PID is" $SSH_AGENT_PID
echo "SSH_AUTH_SOCK is" $SSH_AUTH_SOCK

给予

Could not open a connection to your authentication agent.
SSH_AGENT_PID is
SSH_AUTH_SOCK is

(为了便于阅读而整理)

agent 仍然是 运行 原来的 pid(在顶部签入) 还尝试了 eval $(ssh-agent ) > /dev/nulleval $(ssh-agent -s) 以及组合

为什么这些会被擦除? ssh-agent 工作正常,直到 windows 更新 1709 "fall creators update"

获取信息: linux 版本 4.4.0-43-Microsoft (Microsoft@Microsoft.com) (gcc 版本 5.4.0 (GCC) ) #1-Microsoft Wed Dec 31 14:42:53 PST 2014

从这里转发:https://superuser.com/questions/1278539/ssh-agent-reset-in-windows-subsystem-for-linux-wsl

对于到达这里的任何人来说,这是一个迟到的答案:https://github.com/Microsoft/WSL/issues/3183

简短版本:ssh-agent 转发被 wsl / ubuntu 18.04(或我想象的任何其他 linux)中的 getsockopt 错误破坏。

此问题可以在 Ubuntu 18.04 4.4.0-19041-Microsoft 上通过以下 here:

修复
[ -x /usr/bin/ssh-agent ] && eval "$(ssh-agent -s)"
ssh-add ~/.ssh/yourseckey

将其添加到您的 .bashrc