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

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

我尝试在 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

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

运行提示符(或单独的脚本)后立即运行

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

(已整理以便于阅读)

代理仍在运行,原始 pid(在 top 中检查)也尝试了eval $(ssh-agent ) > /dev/nulleval $(ssh-agent -s)和组合

为什么这些会被删除?ssh-agent 在 windows update 1709“秋季创意者更新”之前运行良好

信息:Linux 版本 4.4.0-43-Microsoft ([电子邮件保护]) (gcc 版本 5.4.0 (GCC) ) #1-Microsoft 2014 年 12 月 31 日星期三 14:42:53 PST

答案1

我正在复制另一个类似帖子中给出的答案(https://stackoverflow.com/a/50942800/9966057)。

尝试调整会话设置是没有用的。

完整答案:https://github.com/Microsoft/WSL/issues/3183

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

答案2

尝试添加-s参数,例如:

eval $(ssh-agent -s)

此参数是描述作为 :

-s在 stdout 上生成 Bourne shell 命令。如果 SHELL 看起来不像是 csh 风格的 shell,则这是默认设置。

答案3

我能够按照keychain本文所述,将 ssh 密钥从 WSL2 转发到 Linux 服务器https://esc.sh/blog/ssh-agent-windows10-wsl2/


Install keychain

sudo apt-get install keychain
Edit your ~/.bashrc, ~/.zshrc or whatever rc file that corresponds to your weird shell of choice (I’m not judging you) and add the following to the bottom of your file.

# For Loading the SSH key
/usr/bin/keychain -q --nogui $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOST-sh

我正在遵循这个指南https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding但我无法让它工作。

在使用钥匙串之前,echo "$SSH_AUTH_SOCK"服务器返回的是空的。

相关内容