每次重启后都要重新导入 ssh 证书,以使 GIT PUSH over ssh 正常工作

每次重启后都要重新导入 ssh 证书,以使 GIT PUSH over ssh 正常工作

我在 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

看看这个https://superuser.com/a/409316/41202更多细节

答案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>

相关内容