我在我的MacBook空气使用OSX 10.8,我有gitconfiguration推送我的存储库通过SSH的EC2实例。 一切工作正常。
唯一的问题是,每次重新启动后,我必须ssh-add certname.pem才能让GIT通过SSH连接到我的ec2实例。
我不确定这是否只是一个被忽视的configuration问题,或者如果有更深的原因。
你不能用
ssh-add -K [keyfile]
将信息添加到您的钥匙串? 那么下次你启动一个terminal的时候就会出现在那个钥匙串上
为什么不build立一个没有密码的密钥,并让git / ssh使用该密钥作为它的SSH IdentityFile ?
(尽pipessh-keygen在生成密钥时会要求您input密码,但您只需按Enter键,结果密钥就不需要使用密码短语)。
既然你想自动重新添加这个密钥,那么你将绕过任何使用密钥给你的安全性,所以在无密码密钥和代理自动导入密钥之间没有实际的区别。
显然你不希望这个密钥除了访问你的git服务器之外不能做任何事情(如果有人把私钥的一半拿到钥匙上,你不想让它们像你一样运行命令!)
你需要的是设置脚本来将pem添加到OSX的keychain下面添加到你的〜/ .bash_profile(或者如果你使用的是zsh〜/ .zshrc)
ssh-add -K certname.pem
嗯。 这是与EC2的sshdevise的一个不幸的互动。 强烈build议您使用pem文件来访问实例,因此为什么您在所有连接示例中都使用ssh -i <aws.pem> …
如何git别名? 我没有testing过这个,因为我没有一个EC2实例在推,但是像这样:
git config alias.ec2push "!sh -c 'ssh-add certname.pem && git push $1 $2'"
那么你会推动:
git ec2push <repo> <branch>