Если вы используете 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
с флагом уничтожения -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 FUNDAMENTALLY INSECURE и поэтому я настоятельно DISCOURAGE используем 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 и вуаля, он / она успешно вошел на ваш сервер как вы.