alv*_*rez 5 git ssh azure-devops
目标是在不提供任何密码的情况下克隆 Visual Studio Team Services 中的 Git 存储库。进一步的目标是完全非交互式地完成,根本没有任何提示。
问题描述:
操作系统是Windows Server 2016。假设我的用户名是batman。我已经在 Windows 中设置了私钥(没有密码)C:\Users\batman\.ssh\id_rsa
。
我在 VSTS 上为我的用户帐户添加了公钥。都好。
我想克隆存储库,VSTS Web UI 为我提供了一个存储库的 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:
Run Code Online (Sandbox Code Playgroud)
所以首先它会要求输入密钥密码,我只需按 Enter 键,但最后一行令人困惑。我应该输入什么密码,为什么要问它?怎么让它不问呢?如何使克隆命令根本不问任何问题?
首先,它要求您提供私钥的密码:
Enter passphrase for key '/c/Users/batman/.ssh/id_rsa':
Run Code Online (Sandbox Code Playgroud)
从您的评论(在现已删除的答案中)我了解到您已使用 PuTTy 生成密钥,并且我怀疑您的密钥格式不正确(也许这会有所帮助?)(或这个?),使确保它以以下内容开头:
-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
并以
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
无论如何,公钥验证失败,因此它会询问mycompany
帐户密码:
mycompany@mycompany.visualstudio.com's password:
Run Code Online (Sandbox Code Playgroud)
如果公钥认证成功,则不会发生这种情况。
在我的解释中,“... Visualstudio.com 的密码”消息是公钥身份验证失败的明确标志(恕我直言,这应该是错误消息的一部分)。在大多数情况下,这意味着未找到私钥文件或其格式无效。
对我来说,解决方案很简单 - 只需修改 .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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5468 次 |
最近记录: |