Якщо ви використовуєте 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-агента в Cygwin :
люди повинні усвідомити потенційну небезпеку ssh-агента під Cygwin 1 , хоча під місцевим netstat та віддаленим портовим моментом не виявляється, що вказаний в / tmp / ssh-foo порт доступний для всіх ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
І за цитованим посиланням :
однак зауважте, що розетки домену Cygwin Unix є ЗАБЕЗПЕЧЕНОЮ, і тому я рішуче ЗАБЕЗПЕЧУЙТЕ використання ssh-агента під Cygwin.
коли ви запускаєте ssh-агент під Cygwin, він створює AF_UNIX сокет у /tmp/ssh-$USERNAME/каталозі. Під Cygwin AF_UNIX розетки емулюються за допомогою AF_INET розеток. Ви можете легко побачити, що якщо ви заглянете у /tmp/ssh-$USERNAME/agent-socket-*файл через Блокнот. Ви побачите щось подібне
!<socket >2080
тоді біжи netstat -aі дивуй! У вас є програма, яка прослуховує порт 2080. Це ssh-агент. Коли ssh отримує виклик RSA від сервера, він посилається на відповідний /tmp/ssh-$USERNAME/agent-socket-*(під Cygwin, в нашому випадку це означає, що він відкриє з'єднання з localhost:2080) і просить ssh-агент обробити виклик RSA приватним ключем, який він має, а потім він просто передає відповідь, отриману від ssh-агента, на сервер.
У Unix такий сценарій працює без проблем, тому що ядро Unix перевіряє дозволи, коли програма намагається отримати доступ до сокета AF_UNIX. Однак для сокетів AF_INET підключення є анонімними (читайте "небезпечно"). Уявіть, що у вас запущений SSH-агент Cygwin. Зловмисний хакер може переглядати вашу скриньку, знаходити відкритий порт, використовуваний ssh-агентом, відкривати з'єднання з вашим SSH-сервером, отримувати від нього виклик RSA, надсилати його своєму агенту ssh через відкритий порт, який він / вона знайшов, отримувати Відповідь RSA, надішліть його на SSH-сервер і вуаля, він / вона успішно увійшов на ваш сервер як ви.