Если вы используете 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 и вуаля, он / она успешно вошли на ваш сервер как вы.