эксперименты

# Git: Использование SSH для безопасного доступа
## Цель урока
На этом уроке мы подробно разберем, что такое **SSH (Secure Shell)** и как его использовать для безопасного и удобного
взаимодействия с удаленными Git-репозиториями. Вы научитесь генерировать SSH-ключи, добавлять их на GitHub и
использовать для аутентификации, что избавит вас от необходимости вводить пароль при каждом `push` или `pull`.
-----
## Что такое SSH и зачем он нужен?
**SSH** — это сетевой протокол, который обеспечивает безопасный обмен данными между двумя компьютерами в незащищенной
сети. В контексте Git, он позволяет вам безопасно подключаться к удаленным репозиториям, таким как на GitHub, GitLab или
Bitbucket.
**Проблема без SSH**:
Когда вы работаете с Git по протоколу HTTPS, вам приходится каждый раз вводить свой логин и пароль. Это может быть
утомительно и небезопасно, особенно если вы делаете много коммитов.
**Решение с помощью SSH**:
SSH использует **аутентификацию по ключу**, которая гораздо безопаснее и удобнее. Вместо пароля вы используете пару
ключей:
* **Приватный ключ (Private Key)**: Хранится только на вашем компьютере. Его нельзя никому показывать.
* **Публичный ключ (Public Key)**: Это открытая часть, которую вы добавляете на свой аккаунт на GitHub.
Когда вы пытаетесь подключиться к удаленному репозиторию, сервер GitHub запрашивает у вас публичный ключ. Если он
совпадает с тем, что у них, они предоставляют вам доступ без пароля.
-----
## Создание и настройка SSH-ключа
### Шаг 1: Проверка наличия SSH-ключей
Прежде чем генерировать новые ключи, проверьте, возможно, у вас уже есть ключи. Откройте терминал (или Git Bash) и
выполните команду:
```bash
ls -al ~/.ssh
```
Если в списке файлов есть `id_rsa.pub` или `id_ecdsa.pub`, то у вас уже есть ключи.
### Шаг 2: Генерация нового SSH-ключа
Если ключей нет, создайте их.
```bash
ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"
```
* `ssh-keygen`: Команда для генерации ключей.
* `-t rsa`: Указывает тип шифрования.
* `-b 4096`: Определяет длину ключа в битах (чем больше, тем безопаснее).
* `-C "ваш_email@example.com"`: Добавляет комментарий, который поможет вам идентифицировать ключ.
Следуйте инструкциям на экране. На все вопросы можно просто нажать Enter. **Парольную фразу (passphrase)** можно
оставить пустой, если вы не хотите вводить её при каждом использовании.
### Шаг 3: Добавление публичного ключа на GitHub
Теперь, когда у вас есть ключи, вам нужно добавить публичный ключ на GitHub.
1. Откройте терминал и скопируйте ваш публичный ключ в буфер обмена.
* **macOS / Linux**: `cat ~/.ssh/id_rsa.pub | pbcopy`
* **Windows (Git Bash)**: `cat ~/.ssh/id_rsa.pub | clip`
2. Перейдите на GitHub, откройте **Settings -\> SSH and GPG keys**.
3. Нажмите **New SSH key**.
4. Введите заголовок для ключа (например, "Мой ноутбук") и вставьте скопированный публичный ключ в текстовое поле.
5. Нажмите **Add SSH key**.
-----
## Использование SSH в Git-репозиториях
Теперь вы можете использовать SSH-адрес репозитория вместо HTTPS.
### Шаг 1: Изменение адреса репозитория
Вместо HTTPS-адреса, который выглядит так:
`https://github.com/user/repo.git`
Используйте SSH-адрес:
`git@github.com:user/repo.git`
Вы можете изменить адрес вашего существующего репозитория с помощью команды:
```bash
git remote set-url origin git@github.com:user/repo.git
```
Здесь `origin` — это стандартное имя для удаленного репозитория.
### Шаг 2: Проверка соединения
Чтобы убедиться, что всё работает, выполните команду:
```bash
ssh -T git@github.com
```
Если вы увидите сообщение вроде `Hi <ваш_username>! You've successfully authenticated...`, значит, всё настроено
правильно.
-----
## Вопросы для самопроверки
1. Объясните, почему SSH-аутентификация безопаснее и удобнее, чем использование логина/пароля.
2. Что такое **приватный** и **публичный** ключ и в чём их разница?
3. Какую команду вы используете для генерации нового SSH-ключа?
4. Как понять, что ваше SSH-соединение с GitHub установлено успешно?
Теория
5 мин
Тест
5 мин
эксперименты
5 мин
Новая страница
5 мин
Тренажёр собеседованияЗакрепите знания перед интервью