GCP Source Repository公钥认证成功但克隆仓库提示权限被拒绝
shell request failed on channel 0说明
这个报错和你克隆仓库的问题无关,属于正常现象。GCP Source Repository的SSH服务仅用于Git仓库读写操作,不提供交互式Shell登录权限,你执行ssh -vT命令本质是请求创建交互式Shell会话,因此服务端会返回这个错误,日志里的Authentication succeeded已经明确说明你的SSH密钥认证本身是正常的。
克隆失败排查方案
核对仓库克隆地址格式
GCP Source Repository的SSH克隆地址必须携带2022端口,正确格式为:ssh://<你的GCP账号邮箱>@source.developers.google.com:2022/p/<GCP项目ID>/r/<仓库名称>
绝大多数类似报错都是因为使用了默认22端口,没有在地址中指定2022端口导致的。你可以直接运行带正确端口的克隆命令测试:git clone ssh://xxxx@xxxxx.ch@source.developers.google.com:2022/p/替换为你的项目ID/r/替换为你的仓库名
如果测试成功,说明是你本地仓库配置的remote地址有误,执行以下命令修改即可:git remote set-url origin 上述正确的仓库地址配置SSH config简化后续操作
你可以在本地~/.ssh/config文件中添加如下配置,避免每次输入端口和用户名:
Host source.developers.google.com HostName source.developers.google.com Port 2022 User xxxx@xxxxx.ch IdentityFile ~/.ssh/id_rsa
配置完成后,即可直接使用简化地址克隆:git clone source.developers.google.com:p/<项目ID>/r/<仓库名>
- 其他罕见场景排查
如果上述操作后仍报错,可核对两个细节:
- 你上传到GCP的公钥内容是否完整,是否和本地
id_rsa.pub文件内容完全一致,没有多余的换行或空格 - 确认你的GCP账号所属的组织没有配置额外的SSH密钥限制策略,禁止非信任设备的密钥访问
内容的提问来源于stack exchange,提问作者rapsli

