# Github: авторизация по SSH ключам ## Создание ключа и добавление его к списку разрешенных ключей на Github. **1. Просмотр имеющихся ключей.** ``` ls -al ~/.ssh ``` нужен для того чтобы либо выбрать один из тех что есть, либо сгенерировать новый **2. Генерируем ключ** ``` ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` -t - тип ключа (rsa) \\ -b - длина \\ -с - комментарий к ключу \\ При генерации будет запрос на имя для ключа (имя_ключа) и на слово-пароль для ключа **3. Идем в свои настройки на Github в пункт "SSH and GPG keys"** Жмем "New SSH key" **4. В окне добавления ключа:** В поле "Title" вводим имя ключа; Выводим в консоли содержимое ключа ``` cat имя_ключа.pub ``` копируем его и вставляем в поле "Key"; Жмем "Add SSH key". При добавлении ключа будет запрос на пароль, вводим - ключ добавлен. **5. Запускаем ssh-agent:** ``` eval «$(ssh-agent -s)» ``` **6. Добавляем ключ:** ``` ssh-add ~/.ssh/имя_ключа ``` (здесь имя_ключа без .pub !!!) **7. Проверяем:** ``` ssh -T git@github.com ``` если всё нормально, получаем ответ в виде: ``` Hi username! You've successfully authenticated, but GitHub does not provide shell access. ``` ## Автоматический запуск ssh-агента при старте Git Bash Для того, чтобы ssh-агент каждый раз запускался автоматически при старте Git Bash, добавьте в файл ~/.profile или ~/.bashrc следующий код: ``` env=~/.ssh/agent.env agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } agent_start () { (umask 077; ssh-agent >| "$env") . "$env" >| /dev/null ; } agent_load_env # 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_start ssh-add elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then ssh-add fi unset env ``` Теперь при запуске Git Bash также будет запускаться и ssh-агент.