Если вы используете SSH и секретный ключ шифруется с помощью ключевой фразы, то вам все равно будет предложено ввести парольную фразу / пароль для закрытого ключа , когда вы делаете сетевые операции с Git , как push, pullиfetch .
Используйте ssh-agent для сохранения пароля-пароля / пароля
Если вы хотите избежать необходимости вводить парольную фразу каждый раз, вы можете использовать ее ssh-agentдля хранения учетных данных парольной фразы личного ключа один раз за сеанс терминала, как я объясняю в своем ответе на Не удалось открыть соединение с вашим агентом аутентификации :
$ eval `ssh-agent -s`
$ ssh-add
В Windows msysgit Bash вам нужно оценить вывод ssh-agent, но я не уверен, нужно ли вам делать то же самое в других средах разработки и операционных системах.
ssh-addищет закрытый ключ в вашей домашней .sshпапке с именемid_rsa , который называется по умолчанию, но вы можете передать путь к файлу ключу с другим именем.
Убить агента
Когда вы закончите сеанс терминала, вы можете завершить работу ssh-agentс флагом kill -k:
$ ssh-agent -k
Как объяснено в ssh-agentруководстве :
-k
Убить текущего агента (заданного переменной среды SSH_AGENT_PID).
Дополнительный тайм-аут
Кроме того, он может принимать необязательный параметр времени ожидания, например, так:
$ ssh-add -t <timeout>
где <timeout>имеет формат <n>hдля <n>часов, в <n>mтечение <n>минут, и так далее.
Согласно ssh-agentинструкции :
-t life
Установите значение по умолчанию для максимального времени жизни идентификаторов, добавляемых к агенту. Время жизни может быть указано в секундах или в формате времени, указанном в sshd_config (5) . Время жизни, указанное для идентификатора с помощью ssh-add (1), переопределяет это значение. Без этой опции максимальное время жизни по умолчанию - навсегда.
Смотрите эту страницу для большего количества форматов времени .
Предупреждение о безопасности для пользователей Cygwin
Пользователи Cygwin должны знать о потенциальной угрозе безопасности при использовании ssh-agent в Cygwin :
люди должны быть осведомлены о потенциальных опасностях ssh-agent в Cygwin 1 , хотя при локальном netstat и удаленном сканировании портов не представляется, что порт, указанный в / tmp / ssh-foo, доступен любому ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
И по приведенной ссылке :
Тем не менее, обратите внимание, что доменные сокеты Cygwin для Unix являются ФУНДАМЕНТАЛЬНО НЕДОСТАТОЧНЫМИ, и поэтому я настоятельно не рекомендую использовать ssh-agent под Cygwin.
когда вы запускаете ssh-agent в Cygwin, он создает сокет AF_UNIX в /tmp/ssh-$USERNAME/каталоге. Под Cygwin сокеты AF_UNIX эмулируются через сокеты AF_INET. Вы можете легко увидеть это, если загляните в /tmp/ssh-$USERNAME/agent-socket-*файл через Блокнот. Вы увидите что-то вроде
!<socket >2080
тогда беги netstat -aи удивляйся! У вас есть программа, слушающая порт 2080. Это ssh-agent. Когда ssh получает запрос RSA от сервера, он ссылается на соответствующий /tmp/ssh-$USERNAME/agent-socket-*(в нашем случае Cygwin означает, что он откроет соединение localhost:2080) и просит ssh-agent обработать запрос RSA с помощью имеющегося у него закрытого ключа, а затем он просто передает ответ, полученный от ssh-agent, на сервер.
В Unix такой сценарий работает без проблем, потому что ядро Unix проверяет разрешения, когда программа пытается получить доступ к сокету AF_UNIX. Однако для сокетов AF_INET соединения являются анонимными (читай «небезопасно»). Представьте, что у вас запущен ssh-агент Cygwin. Вредоносный хакер может портить ваш ящик, найти открытый порт, используемый ssh-agent, открыть соединение с вашим SSH-сервером, получить от него запрос RSA, отправить его вашему ssh-agent через открытый порт, который он / она нашел, получить Ответ RSA, отправьте его на сервер SSH и вуаля, он / она успешно вошли на ваш сервер как вы.