#!/bin/bash # Переменные SSH_DIR="$HOME/.ssh" KEY_NAME="id_alaev_git" KEY_PATH="$SSH_DIR/$KEY_NAME" CONFIG_FILE="$SSH_DIR/config" # 1. Создаем папку .ssh, если её нет if [ ! -d "$SSH_DIR" ]; then echo "Creating directory $SSH_DIR..." mkdir -p "$SSH_DIR" chmod 700 "$SSH_DIR" fi # 2. Генерация SSH ключа (ed25519) if [ -f "$KEY_PATH" ]; then echo "Warning: Key $KEY_NAME already exists. Skipping generation." else echo "Generating SSH ed25519 key..." ssh-keygen -t ed25519 -f "$KEY_PATH" -N "" fi # 3. Проверка и создание файла config if [ ! -f "$CONFIG_FILE" ]; then echo "Config file not found. Creating $CONFIG_FILE..." touch "$CONFIG_FILE" chmod 600 "$CONFIG_FILE" fi # 4. Добавление записи в config, если её там еще нет HOST_ENTRY="Host tea.alaev.site" if grep -q "$HOST_ENTRY" "$CONFIG_FILE"; then echo "Entry for tea.alaev.site already exists in config." else echo "Adding settings for tea.alaev.site to $CONFIG_FILE..." cat <> "$CONFIG_FILE" Host tea.alaev.site HostName tea.alaev.site PreferredAuthentications publickey Port 222 IdentityFile ~/.ssh/id_alaev_git EOT fi # 5. Проверка прав доступа echo "Fixing permissions..." chmod 700 "$SSH_DIR" chmod 600 "$KEY_PATH" chmod 600 "$KEY_PATH.pub" chmod 600 "$CONFIG_FILE" # 6. Вывод публичного ключа для копирования echo -e "\n--- [ DONE ] ---" echo "Your public key (copy it to your Git settings):" echo "-----------------------------------------------------------------------" cat "${KEY_PATH}.pub" echo "-----------------------------------------------------------------------"