Підключення git bash до з використанням ssh, sergey vasin

Власне про те, як налаштувати цей самий 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-агентом відбувалося швидше, ми можемо поставити потрібний інтервал часу в секундах за допомогою команди: