60 lines
1.7 KiB
Bash
60 lines
1.7 KiB
Bash
#!/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 <<EOT >> "$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 "-----------------------------------------------------------------------" |