## Установка SSH (secure shell) для git
При использовании протокола https при каждом подключении к Bitbacket требуется авторизация (например, при выполнении команды git push).
Чтобы не вводить пароль каждый раз создается ключ SSH и прописывается в настройках пользователя Bitbacket.
* Инструкция
Шаг 1. Проверить, что установлен клиент SSH
Можно проверить из GitBash (клиент SSH встроен в GitBash)
Если клиент SSH установлен, то результатом ввода команды <ssh -v> будет информация о версии.
a.polischuk@polischuk-a MINGW64 /
$ ssh -v
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
Шаг 2. Установить аутентификацию по-умолчанию
* запустить GitBash
* ввести команду <ssh-keygen>
* не указывать путь для сохранения ключа. По-умолчанию файлы будут созданы в "~/.ssh"
$ ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/a.polischuk//.ssh/id_rsa): anatolean4bitbucket
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in anatolean4bitbucket.
Your public key has been saved in anatolean4bitbucket.pub.
The key fingerprint is:
SHA256:csep7ze8mibnRnJ/W1Nj1Tk2ucs84Il72qvAX0nxZ/E a.polischuk@polischuk-a
The key''s randomart image is:
+---[RSA 2048]----+
| |
| +|
| . Bo|
| . . + B|
| . S + o =E|
| oooo + B.=|
| .* + = *.|
| ..*.O...o|
| B*B=*o. |
+----[SHA256]-----+
* проверить созданные файлы
$ ls ~/.ssh
id_rsa id_rsa.pub
Шаг 3. Создание конфигурационного файла для SSH
* создать файл ~/.ssh/config
* заполнить файл
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa
Вторая строка должна отстоять от первой ровно на один пробел!!!
* сохранить и закрыть файл
* перезапустить GitBash
Шаг 4. Обновление файла настроек .bashrc
Для того, чтобы ssh-служба запускалась при каждом старте GitBash внести следующие изменения в файл .bashrc
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
"
Если файл .bashrc отсутствует, то создать руками в домашней директории пользователя (/c/users/a.polischuk)
* сохранить и закрыть файл
* перезапустить GitBash
* при старте ssh-агента будет зарегистрирован личный ssh-ключ. Если была введена контрольная фраза при создании личного ключа, то система попросит
ввести этот ключ
* проверить регистрацию ключа
$ ssh-add -l
2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/manthony/.ssh/id_rsa (RSA)
После установки публичного ключа на bitbucket наличие скрипта аутентификации избавит от необходимости указывать каждый раз пароль.
Шаг 5. Установка публичного ключа в профиле bitbucket
* открыть настройки пользователя через <avatar-bitbucket settings>
* нажать на <SSH keys>
* в терминале GitBash отобразить содержимое файла публичного ключа
$ cat ~/.ssh/id_rsa.pub
* выделить и скопировать в буфер памяти содержимое файла публичного ключа
* вернуться в браузер и указать заголовок нового ключа, например <Default publik key>
* вставить содержимое буфера памяти в поле <SSH key>
* нажать <Add key>
* вернуться в терминал GitBash и проверить настройки командой
$ ssh -T git@bitbucket.org
Системное сообщение сообщит о том, какой аккаунт bitbacket может подключаться с этим ключом
Проверить, что выводиться имя вашего аккаунта.
Шаг 6. Настроить свой репозиторий на использование протокола SSH.
* открыть файл настроек git репозитория
* указать вместо url в формате https url в формате ssh
# https://anatolean@bitbucket.org/anatolean/mytetra.git
git@bitbucket.org:anatolean/mytetra.git
Шаг 7. Внести изменнеия в проект по новому протоколу
* изменить readme.md
* закоммитить readme.md с комментарием
git commit -m "making a change under the SSH protocol"
* передать изменения на сервер
$ git push
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 287 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: bb/acl: newuserme is allowed. accepted payload.
To git@bitbucket.org:newuserme/bb101repo.git
056c29c..205e9a8 master -> master