![](/img/trans.png)
[英]`ssh -T` to VSTS(Azure Devops) authenticates successfully, but `git clone` fails
[英]git fails to clone submodule with ssh in azure devops pipeline
我正在嘗試使用 Azure DevOps 管道。 管道應該運行的主存儲庫被克隆得很好,除了我無法克隆它的子模塊。 使用 SSH URL 添加子模塊,因為這是在我的計算機中設置的。
克隆過程失敗並顯示:
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'git@ssh.dev.azure.com:v3/<rest_of_link>' into submodule path '/home/vsts/work/1/s/Modules' failed
Failed to clone 'Modules' a second time, aborting
因此,由於我使用的是 SSH,因此我已經創建了一對 RSA 密鑰,並且我正在使用 Azure 自己的任務來安裝它,如下所示:
- task: InstallSSHKey@0
inputs:
knownHostsEntry: '<entry>'
sshPublicKey: '<public_key>'
sshKeySecureFile: 'id_rsa'
它通過以下 output 成功:
/usr/bin/ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXFGcDdd/agent.1614; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1615; export SSH_AGENT_PID;
echo Agent pid 1615;
/usr/bin/ssh-add -L
The agent has no identities.
/usr/bin/ssh-add /home/vsts/work/_temp/id_rsa
Identity added: /home/vsts/work/_temp/id_rsa (jose@42we-desktop)
/usr/bin/ssh-add
Finishing: InstallSSHKey
太好了,對吧? 除了如果我嘗試用以下方法初始化子模塊:
GIT_SSH_COMMAND="ssh -v" git submodule update --init --recursive
它仍然失敗。
通過查看通過使用 -v 標志提供的額外信息,我可以看到它最初接受密鑰,甚至說Authenticated to ssh.dev.azure.com
,然后在git-upload-pack
之后失敗
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Offering public key: <key> RSA SHA256 <key> agent
debug1: Server accepts key: <key> RSA SHA256 <key> agent
Authenticated to ssh.dev.azure.com ([20.125.155.0]:22) using "publickey".
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: filesystem
debug1: Sending environment.
debug1: channel 0: setting env GIT_PROTOCOL = "version=2"
debug1: channel 0: setting env LANG = "C.UTF-8"
debug1: Sending command: git-upload-pack 'v3/name/project/repo'
remote: Public key authentication failed.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3592, received 2304 bytes, in 2.1 seconds
Bytes per second: sent 1725.1, received 1106.5
debug1: Exit status 2
fatal: Could not read from remote repository.
為什么會失敗?? 這在我的腦海中真的沒有意義,我可以看到如果我在我的計算機(運行 Fedora)中克隆的 output 是相同的,直到“git-upload-pack”。
解決了 解決了 解決了解決了
原來我還需要將生成的 SSH 密鑰添加到我的帳戶中。 一開始我認為這沒有意義,因為身份驗證應該在 azure 機器本身之間進行……無論哪種方式。 它已經完成並且有效!
原來我還需要將生成的 SSH 密鑰添加到我的帳戶中。 一開始我認為這沒有意義,因為身份驗證應該在 azure 機器本身之間進行……無論哪種方式。 它已經完成並且有效!
生成密鑰對后,將私鑰添加到 Azure 庫,將公鑰添加到 YAML 腳本,您還需要將公鑰添加到 azure devops 配置文件中您自己的個人訪問密鑰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.