# 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-агент.