在 NPM v6(在 Windows 上)中,在运行
npm install
拉取一个或多个私有 git 包之前,您需要启动 ssh 代理并向其添加 ssh 密钥。将密钥添加到 ssh 代理时,系统会提示您输入密码。这很有道理。
然而,在 NPM v7 中,这似乎不再是必需的。即使没有运行 ssh 代理,它也可以工作,并且不会提示我输入密码。我的问题是 - NPM v7(或 Git)如何在没有凭据的情况下访问私有 ssh 密钥?似乎可能存在安全漏洞。
首先检查您的依赖 URL:如果是
git+https://
,则不会提示输入 SSH 私钥密码或 SSH 代理,而是依赖于 Git 凭证缓存。
同样,对于 SSH URL,请检查 git config -l 是否有任何替代指令
cd /path/to/repo
git config -l --show-scope --show-origin|grep -i insteadof
如果 SSH URL 自动转换为 HTTPS,则不再涉及 SSH 代理。甚至有 npm/cli/issue 2610 抱怨指定 HTTPS 时使用 SSH。
OP Mark Miretsky在评论中解释:
事实上,我的 SSH URL 被自动转换为 HTTPS,而且,因为我的 HTTPS 凭据存储在 Git 凭据存储中,所以它不会提示我输入凭据选择框架后启动 Astro 时出错另请参阅“