Add generate_ssh.sh
This commit is contained in:
60
generate_ssh.sh
Normal file
60
generate_ssh.sh
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/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 "-----------------------------------------------------------------------"
|
||||
Reference in New Issue
Block a user