You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过SSH密钥让个人GitHub账号获得工作仓库读写权限?

能否通过转移后的SSH密钥获取仓库读写权限?

首先得明确一个核心点:GitHub的权限是绑定在账号上的,SSH密钥只是用来验证你是某个账号的持有者,本身并不携带任何权限。你现在遇到的访问拒绝问题,本质是因为personal@gmail.com这个账号并没有被添加到目标仓库的成员列表中——哪怕你用的是原来work@gmail.com的密钥,现在这个密钥关联的是personal账号,GitHub会验证你是personal账号,然后检查这个账号的权限,自然会拒绝。

那能不能通过这个密钥获取权限?答案是可以,但需要先让personal账号获得仓库权限,具体操作分两步:

第一步:让personal账号获得仓库读写权限

联系目标仓库的管理员,请求将personal@gmail.com这个GitHub账号添加为仓库成员,并分配读写权限。只有当账号本身拥有权限后,对应的SSH密钥才能通过身份验证并获得访问权限。

第二步:确保本地配置正确关联到personal账号

当personal账号获得权限后,你需要确保本地Git和SSH客户端正确使用这个密钥来关联personal账号:

1. 确认SSH密钥已正确添加到personal账号

登录GitHub的personal账号,进入「Settings」→「SSH and GPG keys」,确认你转移过来的密钥已经在列表中,并且work@gmail.com账号下已经移除了该密钥。

2. 配置本地SSH客户端指定密钥

为了避免和其他GitHub账号的密钥冲突,建议在~/.ssh/config(Windows用户是C:\Users\你的用户名\.ssh\config)中添加针对personal账号的配置:

Host github.com-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/你的密钥文件名(比如id_rsa_work)

这样当你用git@github.com-personal作为远程地址时,SSH会自动使用指定的密钥。

3. 修改本地仓库的远程地址

进入本地仓库目录,运行以下命令替换远程地址:

git remote set-url origin git@github.com-personal:仓库所有者用户名/仓库名.git

4. 配置仓库级的用户信息(可选但推荐)

为了确保提交记录显示的是personal账号的信息,进入本地仓库目录运行:

git config user.name "你的Personal GitHub用户名"
git config user.email "personal@gmail.com"

如果用全局配置(git config --global ...)会影响所有本地仓库,所以更推荐仓库级配置。

5. 测试SSH连接

运行以下命令验证是否能成功关联到personal账号:

ssh -T git@github.com-personal

如果输出Hi [你的Personal用户名]! You've successfully authenticated, but GitHub does not provide shell access.,说明配置成功。

完成以上步骤后,你就可以用这个SSH密钥(关联personal账号)正常推送代码到目标仓库了。


内容的提问来源于stack exchange,提问作者ANSHU GOYAL

火山引擎 最新活动