如何通过SSH安装私有NPM包

5
我在GitHub上有一个私人仓库,发布了一个包。我添加了一个部署密钥到私人仓库。
我试图从其他地方安装这个仓库,但遇到了问题。
首先,在GitHub上我的用户账户下创建了一个具有读取权限的个人访问令牌。然后,在我想要安装私人仓库的仓库中,我添加了一个.npmrc文件,其内容如下:
strict-ssl=true
@my-org:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=MY_GITHUB_PAT

完成上述步骤后,我可以通过以下方式成功安装:

npm install @my-org/private-repo

不过,由于各种原因,我需要通过 ssh 安装。该如何操作呢?我已经尝试了以下方法:

npm install git+ssh://git@github.com:my-org/private-repo.git

但那只是安装仓库,而非软件包。在我的代码库中,软件包有构建产物,例如缩小后的文件等。

是否有一种通过ssh仅安装软件包的方法?


你知道如何通过SSH安装 "npm install git+ssh://git@github.com:my-org/private-repo.git" 吗?我需要通过SSH安装。 - Daniel
2个回答

4

指定 GIT_SSH_COMMAND 变量。

GIT_SSH_COMMAND='ssh -i ~/.ssh/<your private key>' npm install git+ssh://git@github.com:my-org/private-repo.git

除非我错了,否则这只安装存储库而不是软件包。软件包可能与存储库不同(例如包含构建产物)。 - MonkBen
我认为解决方案是确保在package.json中定义一个"prepare"脚本。它可以根据需要修改存储库(例如运行tsc或缩小文件大小),使其与实际软件包完全一致。 - MonkBen
你解决了这个问题吗? - Corey Alix
@dwrecked,我有一个问题想问你!你知道如何添加或自动化这个过程吗?我的想法是将其添加到NPM package.json中,然后我的团队只需键入npm install,npm就会安装所有依赖项,但对我来说它不起作用。手动安装可以解决问题。我在Linux上阅读了有关脚本配置的内容,但在Windows上它不起作用! - Daniel
1
抱歉,@Daniel,我不知道。 - deric4
https://dev59.com/jbP3oIgBc1ULPQZFaTc4#71115681?noredirect=1#comment125797820_71115681 - Daniel

-2

个人访问令牌

个人访问令牌用于 https 访问。它们不用于 ssh 访问 GitHub。对于 ssh 访问,您需要向 GitHub 提供您的公钥。

请注意,私钥/公钥身份验证对于 ssh 是可选的。很多人使用密码身份验证,因此很多 ssh 安装实际上默认情况下不会为您生成私钥/公钥对。如果您已安装 openssh(大多数 Unix 系统都是这样),则可以运行以下命令生成您的私钥/公钥对:

ssh-keygen

按照命令行上的说明操作,它应该会生成github所需的文件。顺便说一下:如果您想在自动脚本中使用此证书,建议您生成没有密码的私钥。否则,每次访问github时都会提示您输入密码。

如果您不更改它,ssh-keygen将在$HOME/.ssh/id_rsa.pub生成您的私钥。这是您需要上传到github以访问您的私有repo的文件。

注意:如果您没有使用openssh,则可以通过搜索ssh软件文档了解如何生成和访问公钥。

要上传您的公钥,请登录github上的帐户,转到您的个人资料(右上角的头像图片)并单击“设置”。然后单击“SSH和GPG密钥”

您需要在要从中访问github的所有计算机上重复执行上述所有步骤,因为您的ssh私钥/公钥对特定于您计算机上的openssh。您可以将密钥复制到另一台计算机并将其放入.ssh文件夹中,但这不是一个好主意。为不同计算机分别使用不同的密钥意味着您可以轻松管理哪些计算机可以从github网站访问您的github帐户。


2
有趣的事实:在生成公钥/私钥之后,您可以运行“ssh-copy-id”将证书安装到服务器上,然后使用比密码更好的机制登录服务器,而无需输入密码。 - slebetman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接