Skip to content

ssh-agent

SSH-агент — це програма, яка допомагає керувати приватними ключами SSH та автоматично використовує їх під час спроби з'єднання з віддаленим сервером. Щоб додати ключ до агента, потрібно виконати таку команду:

eval "$(ssh-agent -s)"

Ця команда запустить агента SSH та встановить змінні середовища для поточного сеансу оболонки. Якщо команда відпрацює успішно, то ти побачиш наступне:

macOS

У залежності від середовища, яким ти користуєшся, тобі можуть знадобитися такі команди:

  • sudo -s -H для кореневого доступу перед запуском SSH-агенту;
  • exec ssh-agent bash або exec ssh-agent zsh для запуску SSH-агенту.

Якщо ти користуєшся macOS Sierra 10.12.2 або новішою версією, то щоб автоматично завантажувати ключі в SSH-агент і зберігати парольні фрази у зв’язку ключів, потрібно буде змінити файл ~/.ssh/config:

  1. Спочатку перевір чи такий файл існує:

open ~/.ssh/config

Замість open можна використовувати інші команди, наприклад, lsабо code ~/.ssh/config.

Якщо такий файл існує, то він відкриється в блокноті, наприклад:

  1. Якщо файлу немає, то отримаємо приблизно таке повідомлення:

The file /Users/YOU/.ssh/config does not exist.

Створити його можна наступною командою:

touch ~/.ssh/config

Ти можеш створити цей файл іншим способом, головне, щоб він був у правильній локації.

Далі відкрий цей файл та встав у нього наступний текст:

Host github.com* AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519

Якщо до ключа не було додано парольної фрази passphrase на другому кроці, то рядок UseKeychain не потрібно додавати у файл.

  1. Збережи файл.

Якщо після збереження файлу ти побачиш помилку Bad configuration option: usekeychain, додай рядок `Host*.github.com` до файлу.

Додай свій закритий ключ SSH до агента та збережи свою парольну фразу у зв’язці ключів. Якщо ключ було створено з іншим ім’ям або якщо ти додаєш існуючий ключ з іншим ім’ям, то заміни id_ed25519 у команді на ім’я твого файлу приватного ключа. Для цього виконай наступну команду:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Зверни увагу: коли ти додаєш ключ SSH до агента, параметр --apple-use-keychain зберігає парольну фразу у зв’язці ключів. Якщо парольна фраза не була додана до ключа, виконай команду без параметра --apple-use-keychain:

ssh-add ~/.ssh/id_ed25519

Ось приклад виконання:

Параметр --apple-use-keychain є в стандартній версії Apple ssh-add. У версіях macOS до Monterey (12.0), параметри --apple-use-keychain та --apple-load-keychain мають синтаксис -K та -A відповідно.

Якщо в тебе не встановлено стандартну версію ssh-add від Apple, ти можеш отримати помилку Error: ssh-add: illegal option -- K.

Якщо запит на введення парольної фрази продовжує з’являтися, можливо, потрібно буде додати команду до файлу ~/.zshrc (або файлу ~/.bashrc для Bash).

Крок 4. Додаємо ключ до акаунту на GitHub

Далі потрібно скопіювати наш ключ у буфер обміну. Якщо ти користуєшся Windows, то виконай наступну команду:

clip < ~/.ssh/id_ed25519.pub

А для macOS можна використати таку команду:

pbcopy < ~/.ssh/id_ed25519.pub

Термінал тобі нічого не «відповість», але в буфері при використанні опції «Вставити» має бути ключ:

Тепер відкрий свій GitHub-акаунт та натисни на свій аватар у правому верхньому кутку. Там обери вкладку Settings:

Зліва в секції Access обери SSH and GPG keys:

Біля SSH keys натисни на кнопку New SSH key або Add SSH key:

Далі виконай наступні дії:

  1. У полі Title додай описову мітку для нового ключа. Наприклад, «Особистий ноутбук».
  2. Обери тип ключа: Authentication Key (автентифікація) чи Signing Key (підпис). Додаткову інформацію про підписання комітів ти можеш переглянути в документації About commit signature verification. Якщо не знаєш що обрати, то залиш дефолтне значення — Authentication Key.
  3. У полі Key встав скопійований ключ.
  4. Натисни кнопку [Add SSH key].

Можливо тобі буде потрібно ввести пароль від GitHub-акаунту, щоб підтвердити цю операцію — зроби це. Додаткову інформацію дивись у розділі Sudo mode.

Крок 5. Тестуємо

Повернись у термінал та виконай наступну команду:

ssh -T git@github.com

Якщо ти отримаєш подібне повідомлення, значить усе окей:

А якщо ти побачиш такі повідомлення:

The authenticity of host 'github.com (IP ADDRESS)' can't be established.

ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.

Are you sure you want to continue connecting (yes/no)?

…надрукуй у терміналі yes і натисни ENTER.

Наші вітаннячка! Твій ключ додано!