我在一个项目中设置了一个源存储库。我有我的主要管理员用户,我创建了第二个用户(一开始确实尝试了一个服务帐户(,并给该用户";项目所有者";使用源repo访问项目。
我通过运行ssh-keygen -t rsa -P "" -C "user@domain.com" -f "mysshfile"
在本地机器上创建了SSH密钥
我在.ssh文件夹中创建了一个配置文件:
Host source.developers.google.com
HostName source.developers.google.com
Port 2022
IdentityFile /Users/XXXXX/.ssh/mysshfile
我复制了myshfile.pub的内容,并用Cloud repo SSH密钥注册了它。
当gitclone作为我的第二个用户时,它失败了,并显示错误消息:权限被拒绝(公钥(。当我将克隆作为我的主要管理用户时,它就工作了。
所以我用verbose运行ssh命令来检查:ssh -p 2022 -l admin@domain.com -v source.developers.google.com
,我得到:
debug1: Offering public key: /Users/xxxxxx/.ssh/mysshfile RSA SHA256:U+XREDACTED explicit
debug1: Server accepts key: /Users/xxxxxx/.ssh/mysshfile RSA SHA256:U+XREDACTED explicit
debug1: Authentication succeeded (publickey).
Authenticated to source.developers.google.com ([74.125.197.82]:2022).
当我运行与测试用户ssh -p 2022 -l test@domain.com -v source.developers.google.com
相同的命令时,我得到:
debug1: Offering public key: /Users/xxxxxxx/.ssh/mysshfile RSA SHA256:U+XJREDACTED explicit
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
test@domain@source.developers.google.com: Permission denied (publickey).
我不明白为什么使用ssh的git克隆适用于一个用户(我甚至不想要的用户(,而不适用于另一个用户?
您需要在配置文件中添加以下行:
PubkeyAcceptedKeyTypes +ssh-rsa
所以现在应该是:
Host source.developers.google.com
HostName source.developers.google.com
Port 2022
IdentityFile /Users/XXXXX/.ssh/mysshfile
PubkeyAcceptedKeyTypes +ssh-rsa
在详细模式下,您将看到以下行:
debug1: send_pubkey_test: no mutual signature algorithm
这意味着ssh-rsa
算法被禁用。可以按照此处的说明重新启用。