自动生成github的部署密钥

时间:2015-12-02 20:04:13

标签: bash github ssh-keys

我每天执行以下几次命令:

ssh-keygen -t rsa -N "" -C "info@example.com" -f ~/.ssh/id_rsa_projectname
eval `ssh-agent`
ssh-add ~/.ssh/id_rsa_projectname
cat ~/.ssh/id_rsa_projectname.pub
ssh -T git@github.com

此脚本中唯一的变量是projectname,我想创建一个keygen.sh脚本或类似的东西来自动执行此过程并传递projectname。这可能吗?

另外,我应该在哪里开始寻找什么,不要忘记什么,我有点新手来编写脚本,我知道在错误的手中它可能非常危险。

1 个答案:

答案 0 :(得分:1)

维护一组暂存或开发密钥而不是为所有东西生成它们会不容易?恕我直言,你失去了可配置性,并没有获得太多的安全性。

除此之外,你在正确的轨道上,但我会做一些不同的事情。

export PROJECT=foo;
ssh-keygen -t rsa -N "" -C "info@example.com" -f ~/.ssh/id_rsa_${PROJECT}

这将生成命名密钥id_rsa_foo和id_rsa_foo.pub 现在你需要让你的ssh配置将它用于github。 ~/.ssh/config应该有类似的内容:

Host            remote github.com
IdentityFile    ~/.ssh/id_rsa_foo
User            git
StrictHostKeyChecking no

您需要将公钥上传到github。你必须使用他们的API来解决这个问题。

如果你正确地做了这一切,你应该能够自动克隆克隆。

#!/bin/bash
[[ -z "${PROJECT}" ]] && echo "project must be set" && exit 1
ssh-keygen -t rsa -N "" -C "info@example.com" -f ~/.ssh/id_rsa_${PROJECT}
chmod 400 ~/.ssh/id_rsa_${PROJECT}
echo $'     Host            remote github.com\n    IdentityFile     ~/.ssh/id_rsa_'${PROJECT}'\n    User            git\n      StrictHostKeyChecking no' >> ~/.ssh/config
chmod 644 ~/.ssh/config
# do the github api stuff to add the pub key