如何使用私有Git服务器(SSH)安装Bower包?

54

编辑: 这个人成功地做到了完全一样的事情,我不知道为什么它对我不起作用。

我刚刚安装了git并使用公钥/私钥设置了权限/SSH验证(Centos 6.5)。 我可以无问题地使用以下命令进行拉取/推送:

git clone git@code.organization.com:projects/boilerplate-template

用户名是git,代码位于/home/git/projects,使用git --init --shared boilerplate-template创建了一个仓库。

我如何在另一个项目中使用Bower引用boilerplate-template

我尝试使用下面的bower.json文件,但没有成功:

{
    "name": "my/newproject",
    "dependencies": {
        "boilerplate-template": "git://code.organization.com:projects/boilerplate-template"
    }
}

ECMDERR: 执行 "git ls-remote --tags --heads git://code.organization.com:projects/boilerplate-template" 失败,退出码为 128,无法查找 code.organization.com(端口 project)…

很遗憾它失败了,因为 :project 不是端口,而是路径。我也尝试过用ssh://代替git://

ENOTFOUND: 包 ssh://code.organization.com:projects/boilerplate-template 未找到。

8个回答

67

2
我遇到了这个错误:“ssh:connect to host github.com port 22:Connection refused”,而https://help.github.com/articles/using-ssh-over-the-https-port/帮助了我。 - chfw
1
你知道在Windows上,Bower会在哪里查找你的私钥吗? - markmnl
1
在用户的.ssh文件夹中 - gremo
哇,bower.json的语法和package.json不同...喜欢前端! - Erick Audet

11
也可以,如果您正在使用Github和Bower进行私有存储库,如果需要在远程服务器上运行,则可以创建一个 .netrc 文件。
例如,您拥有DO droplet并且需要检出使用ssh密钥但需要运行bower install的git存储库,其中一些依赖项是私有的。 如果将.netrc文件添加到远程机器上,则可以顺利进行部署/构建。
// .netrc where someToken is generated in Github under Personal access token
machine github.com
    login userName
    password someToken

9

我在使用bower login时遇到了问题,所以我采用了这种方法。 <TOKEN>是在这里生成的。这适用于托管在Github上的私有存储库。

"dependencies": {
    "your-package": "https://<TOKEN>:x-oauth-basic@github.com/Account/Repository.git"
}

1
其他一些方法在我办公室的不同机器上都无法工作,但这个方法始终有效!(谢谢!!!) - Quinma

6

在我们尝试从GitHub下载私有repo时,TeamCity为我们带来了这个问题。如果您遇到同样的问题,可以通过使用SSH并在运行bower install之前通过bower login提供GitHub个人访问令牌来解决它:

在bower.json中的示例依赖项:

"repository": "git@github.com:Account/Repository.git"

在构建脚本中运行的命令:

bower login -t {GitHub Personal Access Token}
bower install

3

这个不行:https://github.com/bower/bower/issues/2317#issuecomment-230050330 - Tom Robinson

2
正如其他人所提到的,将包位置设置为:
"git@code.organization.com:projects/yourproject.git"

允许bower从git仓库拉取内容。

如果在Windows上遇到SSH问题,可以按照以下步骤操作:

  1. 下载PuTTY工具
  2. 使用PuttyGen生成新的密钥。
  3. 将私钥保存到用户的.ssh文件夹中,命名为anything.ppk
  4. 复制PuttyGen中以ssh-rsa开头的文本到剪贴板中
  5. 进入github,选择设置 -> SSH keys -> 添加SSH key,为您的密钥命名并将PuttyGen中的文本粘贴到密钥部分
  6. 添加一个名为GIT_SSH的环境变量,值为Putty工具PLINK.exe的路径,例如C:\Program Files\Putty\PLINK.exe
  7. 运行Putty工具“Pageant.exe”,然后将您的anything.ppk密钥添加到pageant中(您可以通过将C:\pathtopageant\pageant.exe C:\Users\myuser\.ssh\anything.ppk添加到启动文件夹来自动将密钥添加到pageant)
  8. 打开putty.exe,在主机名文本框中输入您的github企业主机名(如上例中的code.organization.com)或“github.com”,然后单击“打开”。您可能会被提示信任主机,点击是将其添加到已知主机文件中,因为bower无法在第一次运行时执行此操作并会挂起
  9. 最后运行bower install

2
我得到的结果是以下内容,虽然仅适用于私有github存储库。
  1. Generate Github access token here and set it as environment variable GITHUB_TOKEN

  2. Define shorthand resolver in .bowerrc:

    "shorthand_resolver": "https://${GITHUB_TOKEN}@github.com/{{owner}}/{{package}}.git"
    
  3. Now I can add my dependency as bower install me/my-private-package or list it in bower.json:

    "dependencies": {
        "my-private-package": "me/my-private-package"
    }
    

这也适用于Heroku构建。


1
如果您从私有仓库克隆,也可能会遇到此问题。接受的答案是正确的,但我想澄清这个问题:
  1. 如果您在机器上拥有github SSH访问权限,请转到git仓库并复制“使用SSH克隆”的链接,然后将其放置在bower.json文件中。

  2. 如果您在机器上设置了https(登录验证)的github,请复制“使用https克隆”的链接,然后将其放置在bower.json文件中。

示例: SSH链接:git@github.com:Account/Repository.git HTTPS链接:https://github.com/Account/Repository.git

Bower.json文件:

"dependencies": { 
 "repository": "在此处粘贴SSH / HTTPS克隆行"
}

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