Кодовые фразы

В данном разделе описан процесс защиты ваших 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>.