来自Go CI / CD的Gitlab连接

时间:2018-08-28 06:34:41

标签: continuous-integration gitlab

我正在尝试使用GO CI / CD管道从gitlab克隆项目。我执行的步骤如下,

  1. 我已经有已添加到gitlab的ssh密钥。
  2. 试图从我的本地计算机克隆,我能够使用“ git clone”命令进行克隆
  3. 我还使用命令“ git clone”在Go-agent服务器上尝试过,并将项目克隆到了那里。
  4. 克隆项目后,我打开了ssh文件夹,并使用一些密钥修改了“ known_hosts”文件。因此,我将ssh文件夹放置在“ C:\ Windows \ System32 \ config \ systemprofile”位置,因为GO-CD管道仅在此处出现。
  5. 但是,每当我尝试测试管道的连接时,都会说访问被拒绝。下面是错误

Repository ssh://git@gitlab.demo.com/exampleproject/someproject.git not found! : 
Error performing command: --- Command ---
git ls-remote ssh://git@gitlab.demo.com/exampleproject/someproject.git
--- Environment ---
{}
--- INPUT ----


--OUTPUT ---

--- ERROR ---
STDERR: Host key verification failed.
STDERR: fatal: Could not read from remote repository.
STDERR: 
STDERR: Please make sure you have the correct access rights
STDERR: and the repository exists.

我也尝试运行命令ssh -T git@gitlab.demo.com,但是它显示“权限被拒绝(公钥)”。谁能告诉我为什么?我缺少什么配置?

1 个答案:

答案 0 :(得分:0)

如果您使用默认名称id_rsa创建了密钥,请尝试将其复制到C:\ Windows \ SysWOW64 \ config \ systemprofile.ssh(https://startbigthinksmall.wordpress.com/2012/04/26/how-to-authorize-local-system-account-for-openssh/)。

如果在重新启动服务后这种方法不起作用,或者您认为需要使用多个身份,则可能有帮助:

我认为重新启动Go-CD服务器服务无效,并且您正在使用默认的本地系统帐户运行Go Server服务。我更喜欢使用域帐户来运行,因为这有助于解决一些棘手的权限问题以及这种类型的配置。首先看一下这个答案:.ssh/config file for windows (git)

如果您使用服务帐户运行,则您的RSA密钥通常写入〜/ .ssh /--可能转换为:C:/ Users /您的帐户/.ssh。如果此文件夹不存在,请在admin模式下打开命令窗口,将cd转到您的帐户文件夹,然后运行mkdir .ssh。

当Go-CD使用SSH连接到Git存储库时,它将使用git命令,而git命令又调用ssh命令。通过所有这些层,可以使用多种方法来配置要使用的身份。首先阅读的文章是(https://medium.com/@pinglinh/how-to-have-2-github-accounts-on-one-machine-windows-69b5b4c5b14e)。请注意sshCommand如何通过指定rsa文件的文件路径来覆盖git将使用的身份。

与直接编辑git配置不同,我认为编辑全局ssh配置将更好地处理多个标识/密钥,并且Go-CD更易于处理。参见https://www.ssh.com/ssh/config/。默认情况下,ssh配置文件位于〜/ .ssh / config。如果您没有,请创建一个没有任何扩展名的名为config的文本文件。编辑文件并添加一个条目,该条目指定您的身份文件(RSA密钥)或文件的路径。例如(https://superuser.com/questions/366649/ssh-config-same-host-but-different-keys-and-usernames):

  Host github_username1
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_1
  Host github_username2
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_2

这将建立可用于您的材料的主机别名。因此,如果您使用的是上面显示的第二个主机,则可以使用git @ github_username2 / pathtorepo来代替git@gitlab.com/pathtorepo。

为了以防万一,请务必在进行更改后使Go-CD服务跳动。