Git clone有效,但git pull不使用SSH

时间:2018-01-30 09:32:39

标签: git jenkins ssh

我们在jenkins上使用SSH密钥从我们的远程Git克隆。它工作正常。我们使用git插件,使用SSH凭据,我们可以克隆存储库。

但是当我们在稍后阶段执行以下命令时它会失败:

git pull origin master

抱怨:

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

似乎此命令不再使用我们的SSH凭据。我们如何使用git CLI来保存我们的SSH凭据?

我在这里看过answer,但看起来我们正面临着另一种情况。

+

 cat .git/config
[core]
    repositoryformatversion = 0
    filemode = true
    logallrefupdates = true
[remote "origin"]
    url = ssh://git@xxx/test-repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

3 个答案:

答案 0 :(得分:4)

首先检查现有的SSH密钥:

1.打开Git Bash。

2.输入ls -al ~/.ssh以查看是否存在现有的SSH密钥:

$ ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist

3.检查目录列表以查看您是否已有公共SSH密钥。

如果现有SSH密钥测试您的SSH连接:

1.打开Git Bash。

2.输入以下内容:

$ ssh -T git@github.com
# Attempts to ssh to GitHub

您可能会看到以下警告之一:

The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

3.确认您看到的消息中的指纹与步骤2中的某条消息匹配,然后键入yes:

Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

4.验证生成的消息是否包含您的用户名。如果您收到"权限被拒绝"消息,请参阅"错误:权限被拒绝(公钥)"。

如果上述过程不起作用:

为您的git存储库步骤生成SSH密钥:

1.打开Git Bash。

2.粘贴下面的文字,替换你的GitHub电子邮件地址。

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这会使用提供的电子邮件作为标签创建一个新的ssh密钥。

Generating public/private rsa key pair.

3.当您提示"输入要保存密钥的文件时,"按Enter键。这接受默认文件位置。

 Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]

4.在提示符下,键入安全密码短语。有关更多信息,请参阅"使用SSH密钥密码"。

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

将新的SSH密钥添加到您的git存储库,请访问此处

https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

答案 1 :(得分:0)

确保已在~/.ssh/config文件中指定了密钥文件的绝对路径。

如果您在ssh配置中使用了相对路径,则克隆时它可能会起作用,具体取决于您当前的工作目录,但是一旦您将CD插入repo文件夹,所有git命令都会失败。

答案 2 :(得分:0)

我可能是为了以后的自己而发布。

除了将公钥以Priyanka Lalge shows us in her answer的形式上传到Github的服务器外,还必须正确配置我们自己的系统。阿喀琉斯之heel似乎是用户名。 Github,可能还有Gitlab等,都要求SSH登录名是git不是您的Github(或Gitlab)用户名!

这是一个正确配置的~/.ssh/config文件,例如:

Host github
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa.github
    IdentitiesOnly yes

请注意,用户git以及使用IdentitiesOnly只能确保仅尝试指定的单个IdentityFile。