Я использую OSX 10.8 на своем MacBook Air, у меня есть git, настроенный для отправки моего репозитория в экземпляр EC2 через ssh. С этим все работает нормально.
Единственная проблема в том, что после каждой перезагрузки я должен ssh-add certname.pem
чтобы GIT мог подключиться к моему экземпляру ec2 через SSH.
Я не уверен, что это просто недооцененная проблема с конфигурацией или для этого есть более глубокая причина.
Разве ты не можешь использовать
ssh-add -K [keyfile]
добавить информацию в связку ключей? Тогда он будет там в следующий раз, когда вы запустите терминал, авторизовавшись на этой связке ключей.
Вам нужно настроить скрипт для добавления pem в цепочку ключей OSX, добавьте строку ниже в свой ~ / .bash_profile (или ~ / .zshrc, если вы используете zsh)
ssh-add -K certname.pem
Проверить это https://superuser.com/a/409316/41202 Больше подробностей
Почему бы просто не настроить ключ без пароля и пусть git / ssh использует этот ключ в качестве SSH IdentityFile
?
(хотя ssh-keygen
запрашивает у вас кодовую фразу, когда вы генерируете ключ, который вы можете просто нажать войти и для полученного ключа не потребуется парольная фраза).
Поскольку вы хотите автоматически повторно добавить этот ключ, вы обойдете любую безопасность, которую использование ключа все равно даст вам, поэтому нет практической разницы между ключом без пароля и ключом, который агент автоматически импортирует.
Очевидно, вы не хотите, чтобы этот ключ мог делать что-либо, кроме доступа к вашему git
сервер (в случае, если кто-то получит в свои руки частную половину ключа, вы не хотите, чтобы они выполняли команды, как вы!)
Хммм. Это неудачное взаимодействие с дизайном ssh EC2. Вам настоятельно рекомендуется использовать файлы 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>