linux/personal_and_work_ssh_git.md


Настройка SSH для личного и рабочего репозитория

1. Создание SSH ключей

Личный SSH ключ:

Для создания SSH ключа для личного репозитория, используйте следующую команду:

ssh-keygen -t ed25519 -C "your_email@example.com"

После этого будет создан новый ключ в директории ~/.ssh/ с именем по умолчанию id_ed25519.

Рабочий SSH ключ:

Для создания SSH ключа для рабочего репозитория, указываем другое имя для ключа, чтобы не переписывать личный:

ssh-keygen -t ed25519 -C "your_work_email@example.com" -f ~/.ssh/id_ed25519_work

Эта команда генерирует пару SSH-ключей для использования с GitHub. Вот подробное описание каждого флага и действия:

  1. ssh-keygen — утилита для генерации, управления и преобразования ключей SSH.

  2. -t ed25519 — указывает тип ключа, который будет сгенерирован. В данном случае используется ed25519, современный и безопасный алгоритм на основе эллиптических кривых. Он предпочтителен из-за своей компактности и высокой скорости.

  3. -C "your_email@example.com" — добавляет комментарий к ключу. Обычно указывают email, чтобы идентифицировать ключ (например, связывать его с учётной записью на GitHub).

  4. -f ~/.ssh/id_ed25519_work — задаёт имя файла, в котором будет сохранён ключ. В данном случае приватный ключ будет сохранён в файл ~/.ssh/id_ed25519_work, а публичный — в ~/.ssh/id_ed25519_work.pub.

Процесс выполнения:

  • Команда запускает процесс генерации пары ключей.
  • Вам может быть предложено указать парольную фразу (passphrase) для дополнительной защиты. Если её не указать, ключ будет защищён только файлами ОС.
  • После завершения процесса:
    • Приватный ключ сохранится в файле ~/.ssh/id_ed25519_work.
    • Публичный ключ — в ~/.ssh/id_ed25519_work.pub.

2. Настройка SSH конфигурации

Настроим файл ~/.ssh/config, чтобы SSH знал, какой ключ использовать для каждого хоста (личный и рабочий аккаунты).

Пример конфигурации:

# Личный аккаунт
Host gitflic-personal
    HostName gitflic.ru
    User git
    IdentityFile ~/.ssh/id_ed25519

# Рабочий аккаунт
Host gitflic-work
    HostName gitflic.ru
    User git
    IdentityFile ~/.ssh/id_ed25519_work

Теперь SSH будет использовать id_ed25519 для личных репозиториев (при обращении к хосту gitflic-personal) и id_ed25519_work для рабочих репозиториев (при обращении к хосту gitflic-work).

3. Настройка Git

Для работы с разными репозиториями можно настроить различные конфигурации Git для каждого проекта. Например, для глобальных настроек и для рабочего репозитория.

Глобальные настройки Git:

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

Локальные настройки Git для рабочего репозитория:

Внутри рабочего проекта можно настроить отдельные данные пользователя:

cd path/to/your/work/project
git config user.name "Your Work Name"
git config user.email "your_work_email@example.com"

4. Использование SSH для клонирования репозиториев

Клонирование личного репозитория:

Для клонирования репозитория с личного аккаунта (после настройки SSH конфигурации):

git clone git@gitflic-personal:best_ru/first_script.git

Клонирование рабочего репозитория:

Для клонирования репозитория с рабочего аккаунта (после настройки SSH конфигурации):

git clone git@gitflic-work:best_ru/first_script.git

5. Автоматизация клонирования репозитория

Для автоматизации клонирования рабочего репозитория можно создать простой скрипт, который будет принимать путь к репозиторию и клонировать его с рабочим ключом.

Пример скрипта:

#!/bin/bash

# Проверяем, передан ли аргумент
if [ -z "$1" ]; then
    echo "Использование: git_clone_work <путь_к_репозиторию>"
    exit 1
fi

# Клонируем репозиторий с рабочего аккаунта
git clone "git@gitflic-work:$1"

Как использовать:

Скрипт можно вызвать командой:

git_clone_work best_ru/first_script.git

Заключение:

Теперь у вас есть настроенная система для работы с разными репозиториями (личными и рабочими), а SSH автоматически будет использовать правильный ключ в зависимости от конфигурации. Также, можно автоматизировать процесс клонирования с помощью скрипта.

Этот Markdown-формат будет удобен для использования в документации или при объяснении процесса настройки другим людям.