再次使用公钥进行身份验证的问题 GCP Source Repository

Posted

技术标签:

【中文标题】再次使用公钥进行身份验证的问题 GCP Source Repository【英文标题】:Issues with authentication again GCP Source Repository with publickey 【发布时间】:2021-12-14 01:27:58 【问题描述】:

我必须进行空白安装并使用该设置新的私钥。我是根据https://cloud.google.com/source-repositories/docs/authentication创建的。

xxxx@xxxxx.ch@source.developers.google.com: Permission denied (publickey). fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

我按照文档进行了多次尝试。总是一样。我已经用 bitbucket 安装了相同的公钥并尝试克隆一个 repo。像魅力一样工作。所以必须正确设置密钥。

我已经运行 ssh -vT xxxx@xxxxx.ch@source.developers.google.com -p2022

哪些输出:

OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Connecting to source.developers.google.com [108.177.127.82] port 2022.
debug1: Connection established.
debug1: identity file C:\\Users\\schae/.ssh/id_rsa type 0
debug1: identity file C:\\Users\\schae/.ssh/id_rsa-cert type -1
debug1: identity file C:\\Users\\schae/.ssh/id_dsa type -1
debug1: identity file C:\\Users\\schae/.ssh/id_dsa-cert type -1
debug1: identity file C:\\Users\\schae/.ssh/id_ecdsa type -1
debug1: identity file C:\\Users\\schae/.ssh/id_ecdsa-cert type -1
debug1: identity file C:\\Users\\schae/.ssh/id_ed25519 type -1
debug1: identity file C:\\Users\\schae/.ssh/id_ed25519-cert type -1
debug1: identity file C:\\Users\\schae/.ssh/id_xmss type -1
debug1: identity file C:\\Users\\schae/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1
debug1: Remote protocol version 2.0, remote software version Go
debug1: no match: Go
debug1: Authenticating to source.developers.google.com:2022 as 'xxxxx@xxxxxx.ch'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:AGvEpqYNMqsRNIviwyk4J4HM0lEylomDBKOWZsBn434
debug1: Host '[source.developers.google.com]:2022' is known and matches the ECDSA host key.
debug1: Found key in C:\\Users\\schae/.ssh/known_hosts:1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
debug1: Will attempt key: C:\\Users\\schae/.ssh/id_rsa RSA SHA256:tV/7LTCWmmg0nL2v0iy5D9/zyyLm4C4wykndp764WlI
debug1: Will attempt key: C:\\Users\\schae/.ssh/id_dsa
debug1: Will attempt key: C:\\Users\\schae/.ssh/id_ecdsa
debug1: Will attempt key: C:\\Users\\schae/.ssh/id_ed25519
debug1: Will attempt key: C:\\Users\\schae/.ssh/id_xmss
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: C:\\Users\\schae/.ssh/id_rsa RSA SHA256:tV/7LTCWmmg0nL2v0iy5D9/zyyLm4C4wykndp764WlI
debug1: Server accepts key: C:\\Users\\schae/.ssh/id_rsa RSA SHA256:tV/7LTCWmmg0nL2v0iy5D9/zyyLm4C4wykndp764WlI
debug1: Authentication succeeded (publickey).
Authenticated to source.developers.google.com ([108.177.127.82]:2022).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
shell request failed on channel 0

在最后几行它说:“身份验证成功”。所以我想用钥匙一切都应该没问题。但我无法克隆存储库。我错过了什么??????

29.10.2021 更新

该 Google 用户具有以下权限:source.repos.create、source.repos.get、source.repos.list、source.repos.update(实际上甚至更多),是的,该用户也是“源存储库管理员” "

也许还有一件事:一切都完美无缺,直到我不得不重新安装本地计算机并重新设置所有内容。在过去一年左右的时间里,没有任何问题。重新安装后,我所做的只是设置一个新的私钥/公钥并在此处安装公钥https://source.cloud.google.com/user/ssh_keys 我不知道还有什么可做的?

我又做了一些实验。我没有从 .ssh 文件夹中删除公钥和私钥。我已经从 GCP 和 Bitbucket 中删除了所有公钥。两者都有相同的错误(显然)。然后我将密钥添加到 bitbucket -> 工作正常。然后我将密钥添加到 GCP 并尝试克隆一个 repo -> 没有成功。权限被拒绝。

调试信息看起来很奇怪?什么意思?

shell request failed on channel 0

【问题讨论】:

您是否已经在IAM Page下设置了用户的roles and permission (roles/source.admin, source.repos.get)? 是的。正如我所提到的:对于同一用户使用不同的密钥从不同的计算机访问它。 @rapsli - 您的评论没有意义。编辑您的问题并指定该帐户正在使用的权限。另一个键无关紧要。 谢谢。因此该 google 用户具有以下权限:source.repos.create、source.repos.get、source.repos.list、source.repos.update(实际上甚至更多),是的,该用户也是“源存储库管理员” 现在这很奇怪。我使用了不同的 key_type ecdsa ......就像魔法一样,它现在正在工作。难道这是某种缓存问题?! 【参考方案1】:

将 key_type 更改为 ecdsa 并且有效。可能是某种缓存或某个键卡在某处。

【讨论】:

以上是关于再次使用公钥进行身份验证的问题 GCP Source Repository的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 对 GCP 计算 API 端点进行身份验证

GCP“管理元数据中的 SSH 密钥”如何在幕后工作 [关闭]

SSH 使用公钥(不是私钥)进行身份验证

如何对 GCP Cloud Run 上的联合 GraphQL 服务进行身份验证?

Firebase 身份验证日志 - GCP

NestJs 使用 jwt 和私钥和公钥进行身份验证