Власне про те, як налаштувати цей самий SSH і піде мова в цій статті.
Але спочатку про те, що особливого в цьому методі підключення.
Використання SSH позбавляє вас від необхідності використовувати ім'я і пароль, так як замість цього використовується пара ключів - відкритий і закритий (public and private), проте в цілях безпеки закритий ключ повинен бути зашифрований за допомогою пароля.
Для початку, перевіримо чи немає у нас жодних вже існуючих ключів.
Запустимо Git Bash і введемо команду
Цією командою ми отримуємо список файлів з папки .ssh. що знаходиться в профілі поточного користувача -
. Якщо ви там знайдете щось на зразок id_rsa і id_rsa.pub. то, можливо, ключ у вас вже є, і якщо замість генерації нових ви вирішите використовувати існуючий, то можете відразу переходити до кроку додавання ключів до ssh-агенту. Ми ж тут зробимо вигляд, що ніяких ключів у нас немає і приступимо до їх генерації.
генеруємо ключі
Для генерації нової пари ключів в консолі git bash введіть наступну команду:
Git bash повідомить що відбувається генерація ключа, а після попросить вказати місце збереження файлів з ключами. Ми можемо або натиснути Enter і погодитися з місцем розташування і ім'ям за умовчанням:
/.ssh/id_rsa.pub. або вказати свій варіант.
Додаємо ключі до ssh-агенту
Тепер нам потрібно додати згенеровані ключі до ssh-агенту.
Тут є цікава річ, якщо у вас встановлений Git Desktop, то ви можете управляти репозиторіями через нього і не звертати уваги на те, про що ми тут говоримо. Однак же, управління Git через консоль за допомогою будь-якої утиліти, на кшталт Git for Windows, про що ми тут і розмірковуємо, є кращим методом, тому варто звернути увагу на питання запуску ssh-агента. Далі в статті ми розглянемо, як налаштувати його автоматичний запуск, зараз же ми запустимо його вручну, командою:
Тепер нам потрібно додати створені ключі до ssh-агенту. Зробимо ми це командою:
В даному випадку ми вказали місце розташування за замовчуванням. Саме в цьому файлі будуть знаходитися ключі в разі, якщо на питання про місце збереження файлів ключів при їх генерації ви взяли значення за замовчуванням, натиснувши Enter.
Якщо ви вказали деякий відмінне від значення за умовчанням місцеположення, то в якості аргументу ви просто вказуєте потрібний шлях і ім'я файлу.
Додавання ключа до вашого профілю на GitHub.com
Отже, що ми маємо. Ми згенерували пару ключів, ссобщілі про їх місцезнаходження ssh-агенту. Тепер же нам потрібно також повідомити сайту GitHub.com про їхнє існування. Точніше про існування відкритого ключа з створеної нами пари.
Для цього спочатку отримаємо значення відкритого ключа за допомогою наступної команди:
Перевірка SSH-з'єднання
Тепер давайте перевіримо ssh-з'єднання. Для цього в консолі Git Bash введемо команду:
При цьому ви отримаєте прохання ввести пароль шифрування закритого ключа.
Після введення пароля ви можете отримати щось на зразок:
В цьому випадку перевірте, що і ви і Git Bash маєте на увазі один і той же ключ, звіривши виведене значення відбитка (fingerprint) з тим, що було отримано при генерації ключів. Їли все в порядку, відповідайте на питання ствердно.
У підсумку ви повинні отримати повідомлення:
де замість username повинно пристосовувати ім'я вашого профілю.
Зміна пароля шифрування закритого ключа
У разі, якщо при генерації ключів ви не вказали пароль шифрування закритого ключа, він буде збережений у відкритому вигляді, чого робити не рекомендується. В цьому випадку ви можете задати пароль шифрування для вже існуючого ключа без його повторної генерації. Також ви можете змінити пароль для вже зашифрованого ключа.
Зробити це можна командою:
Автоматичний запуск ssh-агента при старті Git Bash
Для того, щоб ssh-агент кожен раз запускався автоматично при старті Git Bash, додайте в файл
/.bashrc наступний код:
Тепер при запуску Git Bash також буде запускатися і ssh-агент. Якщо при генерації ключів (або пізніше) ми задали пароль для шифрування закритого ключа, при запуску, ssh-агент буде проявляти інтерес до його значенню. Поянтно, що після закриття Git Bash, його вміст буде забуто і закритий ключ буде в безпеці.
Якщо ж ми хочемо, щоб забуті пароля шифрування ssh-агентом відбувалося швидше, ми можемо поставити потрібний інтервал часу в секундах за допомогою команди: