背景

密钥方式鉴权远比使用固定密码登录要安全,但是在合作项目中,我们希望保留自己的密钥,但又希望private项目能以密钥的方式鉴权。一个具体的场景是,用户A已经配置了.ssh/config中针对github.com的密钥。但是在另一台公共机器上,希望能够pull/push操作一个private仓库。此时这台机器(1)没有用户A的密钥;(2)没有在.ssh/config配置github.com的ssh鉴权方式,故ssh -T git@github.com不成功。我们希望做到:用户A在公共机器上使用密钥访问项目,且该密钥与A自己其他项目是隔离的。

步骤

1. 生成密钥导入github

使用ssh-keygen创建密钥,并在https://github.com/你的用户名/你的某个Private仓/settings/keys中导入到Deploy keys,注意需要push的话记得勾选write权限。

注意密钥文件不要覆盖~/.ssh/id_rsa,可以以仓库名命名。

2. 绑定本地host别名与repo地址

编辑~/.ssh/config

Host github.com-repo-你的仓库名
        Hostname github.com
        IdentityFile=/home/你的linux用户名/.ssh/你前面生成的密钥名

测试一下,shell执行git clone git@github.com-repo-你的仓库名:你的Github用户名/你的Github仓库名.git

能clone表示成功。

3. 切换本地git项目的remote地址

切换到本地仓库目录下,将本地项目与github上的private项目关联:

新项目,直接添加关联:

git remote add origin git@github.com-repo-你的仓库名:你的Github用户名/你的Github仓库名.git

如果关联过,需要重新关联:

git remote set-url origin git@github.com-repo-你的仓库名:你的Github用户名/你的Github仓库名.git

4. 完成

尝试git push,没问题。

最后修改日期: 2023年9月27日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。