Files
merchbay_admin/setup-ssh-keys.sh
Frank John Begornia a4171330e5
Some checks failed
Deploy Development / deploy (push) Has been cancelled
Enhance deployment workflows with additional input parameters and setup scripts
2025-12-16 13:18:29 +08:00

91 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# SSH Key Generation Script for Gitea Deployment
# This script generates SSH keys and helps you set them up
set -e
echo "================================================"
echo "SSH Key Setup for Gitea Deployment"
echo "================================================"
echo ""
# Color codes
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
SSH_KEY_PATH="$HOME/.ssh/gitea_deploy_key"
# Check if key already exists
if [ -f "$SSH_KEY_PATH" ]; then
echo -e "${YELLOW}Warning: SSH key already exists at $SSH_KEY_PATH${NC}"
read -p "Do you want to overwrite it? (y/n): " overwrite
if [ "$overwrite" != "y" ]; then
echo "Using existing key."
else
rm -f "$SSH_KEY_PATH" "$SSH_KEY_PATH.pub"
echo "Generating new SSH key..."
ssh-keygen -t ed25519 -C "gitea-deploy-key" -f "$SSH_KEY_PATH" -N ""
fi
else
echo "Generating new SSH key..."
ssh-keygen -t ed25519 -C "gitea-deploy-key" -f "$SSH_KEY_PATH" -N ""
fi
echo -e "\n${GREEN}✓ SSH key generated successfully!${NC}\n"
# Display private key for Gitea
echo -e "${YELLOW}=== PRIVATE KEY (for Gitea Secrets) ===${NC}"
echo -e "${BLUE}Copy this ENTIRE content for your Gitea secret:${NC}\n"
cat "$SSH_KEY_PATH"
echo ""
# Display public key for server
echo -e "\n${YELLOW}=== PUBLIC KEY (for Server) ===${NC}"
echo -e "${BLUE}Copy this content to add to your server's ~/.ssh/authorized_keys:${NC}\n"
cat "$SSH_KEY_PATH.pub"
echo ""
# Ask if user wants to deploy to server now
echo -e "\n${YELLOW}=== Deploy Public Key to Server ===${NC}"
read -p "Do you want to add the public key to a server now? (y/n): " deploy_now
if [ "$deploy_now" = "y" ]; then
read -p "Enter SSH username: " ssh_user
read -p "Enter server IP/hostname: " ssh_host
echo -e "\nAdding public key to $ssh_user@$ssh_host..."
# Copy public key to server
ssh-copy-id -i "$SSH_KEY_PATH.pub" "$ssh_user@$ssh_host" 2>/dev/null || \
ssh "$ssh_user@$ssh_host" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" < "$SSH_KEY_PATH.pub"
echo -e "\n${GREEN}✓ Public key added to server!${NC}"
# Test connection
echo -e "\nTesting SSH connection..."
if ssh -i "$SSH_KEY_PATH" -o StrictHostKeyChecking=no "$ssh_user@$ssh_host" "echo 'Connection successful!'" 2>/dev/null; then
echo -e "${GREEN}✓ SSH connection test successful!${NC}"
else
echo -e "${YELLOW}⚠ SSH connection test failed. Please check your server configuration.${NC}"
fi
fi
# Summary
echo -e "\n${GREEN}=== Setup Complete! ===${NC}"
echo -e "\n${YELLOW}Next Steps:${NC}"
echo "1. Copy the PRIVATE KEY above and add it to Gitea Secrets as:"
echo " • DEPLOY_SSH_KEY (for dev)"
echo " • PROD_DEPLOY_SSH_KEY (for production)"
echo ""
echo "2. If you didn't deploy the public key yet, manually add it to your server:"
echo " ssh user@server"
echo " echo '$(cat "$SSH_KEY_PATH.pub")' >> ~/.ssh/authorized_keys"
echo ""
echo "3. The key files are saved at:"
echo " Private: $SSH_KEY_PATH"
echo " Public: $SSH_KEY_PATH.pub"
echo ""