我们在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/*
答案 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。