Якщо ви використовуєте 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-сервер і вуаля, він / вона успішно увійшов на ваш сервер як ви.