Кодовые фразы
В данном разделе описан процесс защиты ваших SSH-ключей и конфигурирования агента аутентификации с тем, чтобы вам не нужно было вводить кодовую фразу какждый раз, когда вы используете ключи.
Для чего нужна кодовая фраза?
Пароль - не самый хороший способ защиты данных. Если вы используете легко запоминаемый пароль, его не очень трудно подобрать. Если вы используете сложный пароль, состоящий из случайных символов, его трудно запомнить и проблематично каждый раз вводить.
SSH-ключи являются альтернативой паролям. Конечно, использование ключа без кодовой фразы практически тоже самое, что и ввод случайного пароля: каждый кто имеет доступ к вашему компьютеру имеет доступ и к каждой системе, которую вы используете с этим ключом. Это также не является хорошим способом защиты. Решением служит добавление кодовой фразы к SSH-ключу для создания дополнительного уровня защиты.
Но конечно вам не хочется вводить кодовую фразу каждый раз при использовании ключа!
И не нужно. Благодаря инструменту, называемому ssh-agent, который может сохранить в безопасности вашу кодовую фразу. Если вы работаете под ОС X Leopard или более поздними ваши ключи могут быть сохранены в «связке ключей». Большинство сборок Linux автоматически запускает ssh-agent при старте.
Добавление или изменение кодовой фразы
Вы можете изменить кодовую фразу для существующего приватного ключа без генерации новой пары ключей. Для этого в командной оболочке Git Bash введите команду:
ssh-keygen -p
# Начало процедуры создания SSH-ключа
Enter file in which the key is (/Users/вы/.ssh/id_rsa): [Нажмите Enter]
Enter passphrase (empty for no passphrase): [Введите новую кодовую фразу (просто Enter, если кодовая фраза отсутствует)]
Enter same passphrase again: [Повторите кодовую фразу]
Your identification has been saved with the new passphrase.
|
Если ваш ключ уже имел кодовую фразу вы должны были ввести её перед изменением на новую.
Автозапуск ssh-agent в Git под Windows
Ssh-agent является безопасным способом хранения и использования ваших SSH-ключей.
Замечание. Если вы используете Git Shell, устанавливаемый с GitHub Desktop, вам не нужно выполнять описанные ниже шаги. GitHub Desktop автоматически запускает ssh-agent. Вы можете запустить ssh-agent автоматически при запуске оболочки Bash или Git. |
Вы можете запустить ssh-agent автоматически при открытии оболочки Bash или Git. Скопируйте строки ниже и вставьте их в файл ~/.profile
или ~/.bashrc
в оболочке Git:
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_load_env
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
Замечание. Если ваш приватный ключ не хранится в ~/.ssh/id_rsa или ~/.ssh/id_dsa , вы должны добавить путь к ним с помощью команды добавления ssh для того, чтобы ваша агент аутентификации SSH знал, где их искать. Например:
ssh-add ~/.my_other_ssh/id_rsa
|
Теперь при первоначальном запуске Git Bash вам будет предложено ввести кодовую фразу:
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/вы/.ssh/id_rsa:
Identity added: /c/Users/вы/.ssh/id_rsa (/c/Users/вы/.ssh/id_rsa)
Welcome to Git (version 1.6.0.2-preview20080923)
>
Run 'git help git' to display the help index.
Run 'git help ' to display help for specific commands.
Run 'git help ' to display help for specific commands.
|
Процесс ssh-agent будет продолжаться до тех пор, пока вы не разрегистрируетесь, не выключите компьютер или не закроете процесс.
Если вы хотите, чтобы ssh-agent «забыл» ваш ключ через некоторое время, сконфигурируйте его запуск следующим способом: ssh-add -t <seconds>
.