SSH-ключі для GitHub — Windows, macOS і Linux¶
SSH-ключ дозволяє працювати з GitHub (clone, pull, push) без введення логіна й пароля під час кожної операції.
Ключ потрібно створити один раз на кожному комп'ютері, з якого ти працюєш з GitHub.
Важливо: команди залежать від операційної системи й термінала.
Get-ContentіSet-Clipboard— це команди Windows PowerShell. Вони не працюють уzshабоbashна macOS/Linux.
1. Визнач свою систему¶
У цьому розділі використовуються такі термінали:
| Система | Термінал / shell | Команди нижче |
|---|---|---|
| Windows 10/11 | PowerShell | powershell |
| macOS | Terminal, zsh |
bash |
| Linux | Terminal, bash або zsh |
bash |
У PyCharm Terminal використовуй команди для тієї системи й shell, які реально відкриті в терміналі.
Наприклад, якщо бачиш:
це означає, що ти запустив PowerShell-команду в zsh. Для macOS/Linux потрібно використовувати команди з відповідного розділу нижче.
2. Перевір, чи SSH-ключ уже існує¶
Windows — PowerShell¶
macOS / Linux¶
Якщо бачиш файл на кшталт:
то публічний ключ уже існує. Не створюй новий ключ без потреби. Перейди до кроку 4 — копіювання публічного ключа.
Якщо нічого не знайдено — створи новий ключ.
3. Створи новий SSH-ключ¶
Команда однакова для Windows, macOS і Linux:
Заміни твій_email_на_GitHub на email, який використовуєш у GitHub, наприклад:
Після запуску з'явиться запит приблизно такого вигляду:
Натисни Enter, щоб використати стандартний шлях.
Далі:
Можна:
- ввести пароль для SSH-ключа — це безпечніший варіант;
- або натиснути Enter двічі, щоб залишити ключ без пароля.
Якщо система запитує, чи перезаписати (
overwrite) існуючийid_ed25519, не погоджуйся автоматично. Старий ключ може вже використовуватися для GitHub або інших серверів.
Після створення будуть два файли:
id_ed25519— приватний ключ;id_ed25519.pub— публічний ключ.
⚠️ Приватний ключ id_ed25519 нікому не надсилай і нікуди не публікуй.
Для GitHub потрібен тільки файл із .pub.
4. Скопіюй публічний ключ¶
Windows — PowerShell¶
Після цього ключ уже знаходиться в буфері обміну.
Якщо хочеш просто побачити його в терміналі:
macOS¶
Скопіювати ключ у буфер обміну:
Або показати його в терміналі:
Linux¶
Найбільш універсальний варіант — показати ключ у терміналі:
Потім виділи весь рядок і скопіюй його.
Якщо у твоїй системі встановлено wl-copy (часто Wayland), можна скопіювати одразу:
Для систем із xclip:
Публічний ключ виглядає приблизно так:
Копіюй увесь рядок повністю.
5. Додай публічний ключ у GitHub¶
Відкрий сторінку:
GitHub → Settings → SSH and GPG keys → New SSH key
Заповни:
- Title — зрозуміла назва комп'ютера, наприклад
Windows-PC,MacBook-Air,Ubuntu-Laptop; - Key type —
Authentication Key; - Key — встав скопійований публічний ключ.
Для вставки:
- Windows/Linux — зазвичай
Ctrl+V; - macOS —
Cmd+V.
Натисни Add SSH key.
6. Перевір підключення до GitHub¶
Команда однакова для Windows, macOS і Linux:
Під час першого підключення може з'явитися запит:
Введи:
Успішна відповідь виглядатиме приблизно так:
Це нормальна відповідь. Вона означає, що GitHub розпізнав твій SSH-ключ.
Після цього можна повторити потрібну Git-команду:
7. Якщо бачиш Permission denied (publickey)¶
Спочатку перевір, чи існує публічний ключ.
Windows — PowerShell¶
macOS / Linux¶
Потім перевір:
- чи додано саме цей
.pubключ у GitHub → Settings → SSH and GPG keys; - чи команда
ssh -T git@github.comпрацює; - чи репозиторій використовує SSH-адресу, наприклад:
Перевірити адресу поточного репозиторію:
8. Якщо в системному терміналі працює, а в PyCharm — ні¶
Спочатку відкрий Terminal усередині PyCharm і виконай:
Якщо в системному Terminal/PowerShell команда працює, а в PyCharm — ні, перевір, який shell використовує PyCharm.
У PyCharm:
Settings / Preferences → Tools → Terminal → Shell path
Типові значення:
- Windows PowerShell —
powershell.exeабоpwsh.exe; - macOS —
/bin/zsh; - Linux —
/bin/bashабо/bin/zsh.
Не змішуй команди різних shell. Наприклад:
працює в PowerShell, але не працює в zsh або bash.
Коротка шпаргалка¶
| Дія | Windows PowerShell | macOS | Linux |
|---|---|---|---|
Перевірити .pub ключ |
Get-ChildItem "$env:USERPROFILE\.ssh" -Filter *.pub |
find ~/.ssh -maxdepth 1 -type f -name "*.pub" -print 2>/dev/null |
find ~/.ssh -maxdepth 1 -type f -name "*.pub" -print 2>/dev/null |
| Створити ключ | ssh-keygen -t ed25519 -C "email" |
ssh-keygen -t ed25519 -C "email" |
ssh-keygen -t ed25519 -C "email" |
Скопіювати .pub |
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" \| Set-Clipboard |
pbcopy < ~/.ssh/id_ed25519.pub |
cat ~/.ssh/id_ed25519.pub |
| Перевірити GitHub | ssh -T git@github.com |
ssh -T git@github.com |
ssh -T git@github.com |
⚠️ Надсилати викладачу можна тільки публічний ключ (
id_ed25519.pub).
Приватний ключ (id_ed25519) нікому не передавай.