Git — SSH ключи
🧠 Суть
SSH-ключ заменяет логин/пароль при работе с GitHub/GitLab. Генерируется один раз, публичная часть добавляется на сервер.
💻 Создать ключ
bash
ssh-keygen -t ed25519 -C "you@example.com"
# Путь: ~/.ssh/id_ed25519 (Enter — оставить по умолчанию)
# Passphrase: задать или оставить пустым
ed25519— современный алгоритм, быстрее и безопаснее старогоrsa.
💻 Добавить на GitHub
bash
# Показать публичный ключ
cat ~/.ssh/id_ed25519.pubGitHub → Settings → SSH and GPG keys → New SSH key → вставить вывод команды выше.
bash
# Проверить подключение
ssh -T git@github.com
# Hi username! You've successfully authenticated...💻 Несколько аккаунтов (work + personal)
bash
# Создать второй ключ
ssh-keygen -t ed25519 -C "work@company.com" -f ~/.ssh/id_ed25519_workbash
# ~/.ssh/config
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_workbash
# Клонировать через нужный аккаунт
git clone git@github-work:company/repo.git💻 ssh-agent — не вводить passphrase каждый раз
bash
# Запустить агент и добавить ключ
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# Arch/Manjaro — автозапуск через systemd (добавить в ~/.zshrc или ~/.bashrc)
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519 2>/dev/null
fi⚠️ Подводные камни
- Публичный ключ —
*.pub— его добавляют на GitHub; приватный не показывать никому - Если
ssh -T git@github.comвыдаётPermission denied— ключ не добавлен на GitHub или агент не запущен - Для разных аккаунтов обязательно
~/.ssh/config— иначе всегда будет использоваться первый ключ