我在 macbook air 上使用 OSX 10.8,我已将 git 配置为通过 ssh 将存储库推送到 EC2 实例。一切正常。
唯一的问题是每次重启后我都必须ssh-add certname.pem
允许 GIT 通过 SSH 连接到我的 ec2 实例。
我不确定这是否只是一个被忽视的配置问题,或者是否有更深层次的原因。
答案1
你不能使用
ssh-add -K [keyfile]
将信息添加到您的钥匙串?然后,当您在通过该钥匙串的身份验证后,下次启动终端时,这些信息就会出现在那里
答案2
为什么不直接设置一个没有密码的密钥呢?让 git/ssh 使用该密钥作为其 SSHIdentityFile
?
(尽管ssh-keygen
在您生成密钥时会要求您输入密码,但您只需输入密码即可enter,生成的密钥不需要密码即可使用)。
由于您想要自动重新添加此密钥,因此您将绕过使用密钥所能提供的任何安全性,因此无密码密钥和代理自动导入的密钥之间没有实际区别。
显然,您不希望这个密钥能够做除了访问您的git
服务器之外的任何事情(如果有人拿到了密钥的私钥,您也不希望他们以您的身份运行命令!)
答案3
您需要设置脚本以将 pem 添加到 OSX 的钥匙串,将以下行添加到您的 ~/.bash_profile(如果您使用 zsh,则为 ~/.zshrc)
ssh-add -K certname.pem
答案4
嗯。这是与 EC2 的 ssh 设计的一次不幸的交互。强烈建议您使用 pem 文件来访问实例,这就是为什么您ssh -i <aws.pem>
在所有连接示例中都看到...
那么 git 别名怎么样?我还没有测试过这个,因为我没有可以推送的 EC2 实例,但是类似的东西:
git config alias.ec2push "!sh -c 'ssh-add certname.pem && git push $1 $2'"
然后你可以推动:
git ec2push <repo> <branch>