目标是克隆中的Git存储库,而不提供任何密码。进一步的目标是完全非交互地完成它,完全没有任何提示。
问题描述:
操作系统是Windows 2016。假设我的用户名是蝙蝠侠。我已经在C:\Users\batman\.ssh\id_rsa
的Windows中设置了私钥(没有密码)。
我在VSTS为我的用户帐户添加了公钥。一切都很好。
我想克隆这个存储库,而VSTS为我提供了一个到存储库的SSH URL。我在执行以下命令时使用它:
git clone ssh://mycompany@mycompany.visualstudio.com:22/MyProject/_git/MyRepo
答复:
Cloning into 'MyRepo'...
Enter passphrase for key '/c/Users/batman/.ssh/id_rsa':
mycompany@mycompany.visualstudio.com's password:
因此,首先,它要求输入密码,我只需按Enter键,但最后一行是令人困惑的。我应该输入什么密码,它为什么要问它?怎么才能让它不问呢?如何使克隆命令完全不问任何问题?
发布于 2017-05-09 11:33:35
首先,它向您的私钥请求密码:
Enter passphrase for key '/c/Users/batman/.ssh/id_rsa':
从您的评论(在现在删除的答案中)中,我了解到您使用了PuTTy来生成密钥,并且我怀疑您的密钥不是以正确的格式(也许这个能帮上忙?)(还是这个?)开始的,请确保它的开头是:
-----BEGIN RSA PRIVATE KEY-----
并以
-----END RSA PRIVATE KEY-----
无论如何,公钥身份验证失败,因此它请求mycompany
帐户的密码:
mycompany@mycompany.visualstudio.com's password:
如果公钥身份验证成功,则不会发生这种情况。
发布于 2020-11-19 18:04:46
在我的解释中,“. message alstudio.com的密码”消息是公钥身份验证失败的明确标志(这应该是错误消息IMHO的一部分)。在大多数情况下,这意味着找不到私钥文件或其格式无效。
对我来说,这个解决方案很简单--简单地修改了. .ssh/config文件(我在我的Windows和Mac上都使用了OpenSSH )。我在Microsoft ( 此页底部)上找到的正确设置
将其粘贴到. .ssh/config文件中之后,所有这些都开始完美地工作了:
# Most common scenario: to use the same key across all hosted Azure DevOps
# organizations, add a Host entry like this:
Host ssh.dev.azure.com
IdentityFile ~/.ssh/your_private_key
IdentitiesOnly yes
# This model will also work if you still use the older SSH URLs with a
# hostname of vs-ssh.visualstudio.com:
Host vs-ssh.visualstudio.com
IdentityFile ~/.ssh/your_private_key
IdentitiesOnly yes
发布于 2020-03-20 17:42:31
使用以下命令遍历日志:
GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo
在大多数情况下,问题在于.ssh目录中缺少默认名称id_rsa的私钥。您可以通过允许默认名称"id_rsa“来解决这个问题,方法是在使用ssh-keygen生成密钥时不在键名提示符中指定任何内容。如果必须使用不同的键,可以通过使用命令指定其路径来做到这一点:
ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey; git clone ssh://pathToYourRepo'
最后,确保您实际上正在复制路径的ssh版本,而不是https (请确保路径以ssh://开头,而不是https://),并且在将公钥复制到服务器的密钥列表时没有任何空白。
https://stackoverflow.com/questions/43868402
复制相似问题