Глава 23 · Часть I · Git и GitHub с нуля

Настраиваем SSH

Приватный ключ остаётся на компьютере и доказывает личность, не покидая его; публичный ключ уходит на GitHub.

SafeSort · Часть 1 из 6Git и GitHub
Ваш компьютерприватный ключ —никогда его непокидаетssh-agentхранит расшифрованныйключ в памяти навремя сессииGitHubпубличный ключ —подтверждаетподлинность, не даёт…
Приватный ключ доказывает личность, не покидая компьютер; на GitHub попадает только публичный

SSH-аутентификация строится на паре ключей: приватный остаётся на вашем компьютере и никогда никому не передаётся, публичный — загружается в настройки GitHub. GitHub проверяет, что у вас есть приватная половина пары, не видя её саму.

Создаём ключ

Документированная команда — см. официальную инструкцию GitHub
ssh-keygen -t ed25519 -C "you@example.com"

На вопрос о файле для сохранения обычно достаточно нажать Enter (путь по умолчанию), а парольную фразу (passphrase) стоит задать — это дополнительная защита ключа на диске.

Добавляем ключ в ssh-agent

Документированная команда
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Добавляем публичный ключ в GitHub

Содержимое файла ~/.ssh/id_ed25519.pub копируется в Settings → SSH and GPG keys → New SSH key.

Проверяем соединение

Документированная команда
ssh -T git@github.com
# Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
Это сообщение — не ошибка
GitHub не предоставляет интерактивную оболочку по SSH — фраза «does not provide shell access» означает ровно то, что она говорит: соединение и аутентификация прошли успешно, именно это и было целью проверки.
Официальная документация
About SSH
Generating a new SSH key and adding it to the ssh-agent
Adding a new SSH key to your GitHub account
Перевод и учебная адаптация официальной документации GitHub. Исходный материал — CC BY 4.0.

Коротко

  • Приватный ключ никогда не покидает компьютер; на GitHub загружается только публичный.
  • ssh-keygen создаёт пару, ssh-add добавляет её в ssh-agent на время сессии.
  • ssh -T git@github.com проверяет соединение — сообщение об отсутствии shell-доступа означает успех.