我每天执行以下几次命令:
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
。这可能吗?
另外,我应该在哪里开始寻找什么,不要忘记什么,我有点新手来编写脚本,我知道在错误的手中它可能非常危险。
答案 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