我尝试在 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/null
和eval $(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"
服务器返回的是空的。