我正在尝试使用GO CI / CD管道从gitlab克隆项目。我执行的步骤如下,
:
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
,但是它显示“权限被拒绝(公钥)”。谁能告诉我为什么?我缺少什么配置?
答案 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服务跳动。