通过 DevOps Rest API 将 SSH 密钥添加到 Azure DevOps 管道用户
Add SSH key to Azure DevOps pipeline user via DevOps Rest API
我想将 SSH Public 密钥添加到 Azure DevOps 帐户 运行 我的 yaml 管道。根据此 post: 在使用 PAT 令牌进行身份验证时,有时可以上传 public 密钥。
我可以从我的管道访问 Azure DevOps Rest API 并通过 Rest API 列出存储库等,但我不知道如何为上传 API 的查询构建主体=42=] SSH密钥。到目前为止我有这个:
$uri = 'https://dev.azure.com/{MyOrg}/_usersSettings/keys'
$Headers = @{Authorization='Basic <encoded PAT>';'content-type'='application/json'}
$Body = @{
displayName = 'MyKey'
publicData = 'My Public Key starting with ssh-rsa '
scope = 'app_token'
isPublic = $true
} | ConvertTo-Json
Invoke-RestMethod -Uri $uri -Headers $Headers -Method POST -Body $body
上面的命令不会产生任何错误,只是一个很长的 html.
非常欢迎提供有关如何通过 PowerShell 或任何其他命令行选项将证书上传到 Azure DevOps 的提示。
更新:
我尝试按照 Hugh Lin - MSFT 所述从门户中的 post 中提取身份验证 ID:
然后我提取授权 ID 并将其添加到新 post 的有效负载中。在 posting 之前,我还更改了 displayName 和 Public 数据,使正文看起来像这样:
{
"contributionIds": ["ms.vss-token-web.personal-access-token-issue-session-token-provider"],
"dataProviderContext": {"properties": {
"displayName": "AutoKey",
"authorizationId": "48bef66f-798e-499b-94cc-720e48296bf7",
"publicData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZA//Y+7vLd+P2F4WmIHpBPEMn/lPHPXrxHEJhhtnrNNZzgwIkWpgGQcuGQt2rmxEWYsSEV+CxTZcO7jig0yr8rsntUZJnCc86SVP22AfvE1rmRM/k+m6QRCBrSoHCAR+2ho/XoJ8iuZdvIV7qvV0Vk/N9rnf+KsJlK97RQWSc61rPl+7cUeXkBB8qsWOMeVxe9NhWH8DeWV+JG0nroTaZDrTq9BI5UDc7kqrRgwPCvqwT749C3k3cijxqEvK5bwWZ5NFaGj4CW8qRGXR5Sf6GJlQLgOrH+V2R7Ns5kLunD/Yy6RvSUiwokCyb3tDqBgB3W9lEtuxqcaYUwig0/GIF axel@me.com",
"scope": "app_token",
"targetAccounts": ["67ebc765-c850-4d22-b95f-1d3553xxxxxx"],
"isPublic": true,
"sourcePage": {
"url": "https://dev.azure.com/cloudeonwest/_usersSettings/keys",
"routeId": "ms.vss-admin-web.user-admin-hub-route",
"routeValues": {
"adminPivot": "keys",
"controller": "ContributedPage",
"action": "Execute",
"serviceHost": "67ebc765-c850-4d22-b95f-1d3553bxxxxxx (Org)"
}
}
}}
}
运行 请求导致显示名称被更新,但 public数据保持不变:
$answer.dataProviders.'ms.vss-token-web.personal-access-token-issue-session-token-provider'
clientId : 00000000-0000-0000-0000-000000000000
accessId : 52447de9-8c41-4d5b-bfdb-48b4eaxxxxxx
authorizationId : 48bef66f-798e-499b-94cc-720e48296bf7
hostAuthorizationId : 00000000-0000-0000-0000-000000000000
userId : 357d38ad-6712-69e1-adc3-be8caxxxxxx
validFrom : 7/25/2020 3:26:51 PM
validTo : 7/25/2025 3:26:51 PM
displayName : AutoKey
scope : app_token
targetAccounts : {67ebc765-c850-4d22-b95f-1d3553xxxxxx}
token :
alternateToken :
isValid : True
isPublic : True
publicData : BBBAB3NzaC1yc2EAAAADAQABAAABAQDZA//Y+7vLd+P2F4WmIHpBPEMn/lPHPXrxHEJhhtnrNNZzgwIkWpgGQcuGQt2rmxEWYsSEV+CxTZcO7jig0yr8rsntUZJnCc86SVP22AfvE1rmRM/k+m6QRCBrSoHCAR+2ho/XoJ8iuZdvIV7qvV0Vk/N9rnf+KsJlK97RQWSc61rPl+7cUeXkBB8qsWOMeVxe9NhWH8DeWV+JG0nroTaZDrTq9BI5UDc7kqrRgwPCvqwT749C3k3cijxqEvK5bwWZ5NFaGj4CW8qRGXR5Sf6GJlQLgOrH+V2R7Ns5kLunD/Yy6RvSUiwokCyb3tDqBgB3W9lEtuxqcaYUwig0/GIF
source :
claims :
而且门户网站也明显更新了:
恐怕目前azure devops不支持通过rest上传ssh keys api。官方文档也没有提供restapi可以实现这个功能。目前只能通过UI
添加publicssh key
除了否定的答案,我觉得你想要的是个好主意!所以我 post 在 DC 论坛中提出功能请求 here。您可以对该建议票进行投票并分享您的评论 there.The 产品团队会在查看后提供更新。感谢您帮助我们构建更好的 Azure DevOps。
我想将 SSH Public 密钥添加到 Azure DevOps 帐户 运行 我的 yaml 管道。根据此 post:
我可以从我的管道访问 Azure DevOps Rest API 并通过 Rest API 列出存储库等,但我不知道如何为上传 API 的查询构建主体=42=] SSH密钥。到目前为止我有这个:
$uri = 'https://dev.azure.com/{MyOrg}/_usersSettings/keys'
$Headers = @{Authorization='Basic <encoded PAT>';'content-type'='application/json'}
$Body = @{
displayName = 'MyKey'
publicData = 'My Public Key starting with ssh-rsa '
scope = 'app_token'
isPublic = $true
} | ConvertTo-Json
Invoke-RestMethod -Uri $uri -Headers $Headers -Method POST -Body $body
上面的命令不会产生任何错误,只是一个很长的 html.
非常欢迎提供有关如何通过 PowerShell 或任何其他命令行选项将证书上传到 Azure DevOps 的提示。
更新:
我尝试按照 Hugh Lin - MSFT 所述从门户中的 post 中提取身份验证 ID:
然后我提取授权 ID 并将其添加到新 post 的有效负载中。在 posting 之前,我还更改了 displayName 和 Public 数据,使正文看起来像这样:
{
"contributionIds": ["ms.vss-token-web.personal-access-token-issue-session-token-provider"],
"dataProviderContext": {"properties": {
"displayName": "AutoKey",
"authorizationId": "48bef66f-798e-499b-94cc-720e48296bf7",
"publicData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZA//Y+7vLd+P2F4WmIHpBPEMn/lPHPXrxHEJhhtnrNNZzgwIkWpgGQcuGQt2rmxEWYsSEV+CxTZcO7jig0yr8rsntUZJnCc86SVP22AfvE1rmRM/k+m6QRCBrSoHCAR+2ho/XoJ8iuZdvIV7qvV0Vk/N9rnf+KsJlK97RQWSc61rPl+7cUeXkBB8qsWOMeVxe9NhWH8DeWV+JG0nroTaZDrTq9BI5UDc7kqrRgwPCvqwT749C3k3cijxqEvK5bwWZ5NFaGj4CW8qRGXR5Sf6GJlQLgOrH+V2R7Ns5kLunD/Yy6RvSUiwokCyb3tDqBgB3W9lEtuxqcaYUwig0/GIF axel@me.com",
"scope": "app_token",
"targetAccounts": ["67ebc765-c850-4d22-b95f-1d3553xxxxxx"],
"isPublic": true,
"sourcePage": {
"url": "https://dev.azure.com/cloudeonwest/_usersSettings/keys",
"routeId": "ms.vss-admin-web.user-admin-hub-route",
"routeValues": {
"adminPivot": "keys",
"controller": "ContributedPage",
"action": "Execute",
"serviceHost": "67ebc765-c850-4d22-b95f-1d3553bxxxxxx (Org)"
}
}
}}
}
运行 请求导致显示名称被更新,但 public数据保持不变:
$answer.dataProviders.'ms.vss-token-web.personal-access-token-issue-session-token-provider'
clientId : 00000000-0000-0000-0000-000000000000
accessId : 52447de9-8c41-4d5b-bfdb-48b4eaxxxxxx
authorizationId : 48bef66f-798e-499b-94cc-720e48296bf7
hostAuthorizationId : 00000000-0000-0000-0000-000000000000
userId : 357d38ad-6712-69e1-adc3-be8caxxxxxx
validFrom : 7/25/2020 3:26:51 PM
validTo : 7/25/2025 3:26:51 PM
displayName : AutoKey
scope : app_token
targetAccounts : {67ebc765-c850-4d22-b95f-1d3553xxxxxx}
token :
alternateToken :
isValid : True
isPublic : True
publicData : BBBAB3NzaC1yc2EAAAADAQABAAABAQDZA//Y+7vLd+P2F4WmIHpBPEMn/lPHPXrxHEJhhtnrNNZzgwIkWpgGQcuGQt2rmxEWYsSEV+CxTZcO7jig0yr8rsntUZJnCc86SVP22AfvE1rmRM/k+m6QRCBrSoHCAR+2ho/XoJ8iuZdvIV7qvV0Vk/N9rnf+KsJlK97RQWSc61rPl+7cUeXkBB8qsWOMeVxe9NhWH8DeWV+JG0nroTaZDrTq9BI5UDc7kqrRgwPCvqwT749C3k3cijxqEvK5bwWZ5NFaGj4CW8qRGXR5Sf6GJlQLgOrH+V2R7Ns5kLunD/Yy6RvSUiwokCyb3tDqBgB3W9lEtuxqcaYUwig0/GIF
source :
claims :
而且门户网站也明显更新了:
恐怕目前azure devops不支持通过rest上传ssh keys api。官方文档也没有提供restapi可以实现这个功能。目前只能通过UI
添加publicssh key除了否定的答案,我觉得你想要的是个好主意!所以我 post 在 DC 论坛中提出功能请求 here。您可以对该建议票进行投票并分享您的评论 there.The 产品团队会在查看后提供更新。感谢您帮助我们构建更好的 Azure DevOps。