早期github支持用密码提交版本变更,这种方式的好处是,你可以在不同的电脑上开发程序。最新的github政策已经放弃了对提交时使用密码的支持,也就是您不得不在ssh key和token两者中选择一种。
Token有个不好的地方是,有时你在项目或代码库里不得不用环境变量隐藏它,因为你不想提交时把它也一并提交暴露给其它用户。另外一些部署工具对Token的支持也十分有限,比如我就碰上在hexo的部署中hexo-deployer-git这个工具对Token不能很好支持的情况。另外,通常您必须为Token设置个有效期。这种情况下,使用ssh公钥似乎是一种更方便的选择。SSH的问题是,您必须在电脑上配置好公钥,并在github中设置它,大多数人不会有超过三台以上的开发电脑,所以这个ssh应该是最方便的选择。
一、在电脑上创建ssh密钥对
Linux电脑的ssh密钥一般存放在用户目录下的.ssh隐藏目录中,您可以查看一下当前的~/.ssh
下是否已经有了类似id_rsa.pub或id_ed25519.pub密钥文件。如果已经有便可以省掉创建过程,直接使用。
要创建ssh密钥对,请用下面指令:
ssh-keygen -t ed25519 -C "your_email@example.com"
您还需要添加密钥到ssh-agent中
ssh-add ~/.ssh/id_ed25519
我们需要先复制好id_ed25519.pub中的内容,以便在github上添加。
二、在github上添加公钥
Github的用户Setting左侧菜单下有个SSH and GPG keys,我们点击New SSH key来添加一个密钥,为密钥起个名称,比如你的机器型号或IP,然后在正文中粘贴之前复制的公钥内容。
三、验证和测试
我们可以在linux中用命令行来验证刚才添加的密钥是否可行:
ssh -T git@github.com
如果出现提示: You’ve successfully authenticated, but GitHub does not provide shell access. 表明密钥已经成功设置,您接下来就可以用ssh密钥免登录提交了。
注意,为了使用ssh key,您在远程库的配置中将只能用git而不能用https,因此如果您之前是https操作的话,就要把远程库中的https替换成git的方式。具体办法如下:
原url是: https://github.com/username/repo_url 应变成: git@github.com:username/repo_url