127 lines
3.3 KiB
Bash
127 lines
3.3 KiB
Bash
#!/bin/bash
|
|
# SSH Setup for git.etoth.dev
|
|
# Usage: bash setup-git-ssh.sh
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " SSH Setup for git.etoth.dev"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# Create SSH directory
|
|
SSH_DIR="$HOME/.ssh"
|
|
SSH_CONFIG="$SSH_DIR/config"
|
|
|
|
if [ ! -d "$SSH_DIR" ]; then
|
|
echo -e "${BLUE}→ Creating SSH directory...${NC}"
|
|
mkdir -p "$SSH_DIR"
|
|
chmod 700 "$SSH_DIR"
|
|
echo -e "${GREEN}✓ SSH directory created${NC}"
|
|
else
|
|
echo -e "${GREEN}✓ SSH directory exists${NC}"
|
|
fi
|
|
|
|
# Create backup
|
|
if [ -f "$SSH_CONFIG" ]; then
|
|
BACKUP_FILE="$SSH_CONFIG.backup.$(date +%Y%m%d_%H%M%S)"
|
|
cp "$SSH_CONFIG" "$BACKUP_FILE"
|
|
echo -e "${GREEN}✓ Backup created: $BACKUP_FILE${NC}"
|
|
fi
|
|
|
|
# Check if already configured
|
|
if grep -q "^Host git.etoth.dev" "$SSH_CONFIG" 2>/dev/null; then
|
|
echo ""
|
|
echo -e "${YELLOW}⚠ git.etoth.dev is already configured!${NC}"
|
|
echo ""
|
|
read -p "Do you want to overwrite the configuration? (y/n): " OVERWRITE
|
|
|
|
if [ "$OVERWRITE" != "y" ] && [ "$OVERWRITE" != "Y" ]; then
|
|
echo -e "${BLUE}→ Setup cancelled.${NC}"
|
|
exit 0
|
|
fi
|
|
|
|
# Remove old configuration
|
|
sed -i.bak '/^# Gitea Server git.etoth.dev/,/^$/d' "$SSH_CONFIG" 2>/dev/null || \
|
|
sed -i '' '/^# Gitea Server git.etoth.dev/,/^$/d' "$SSH_CONFIG" 2>/dev/null || true
|
|
echo -e "${GREEN}✓ Old configuration removed${NC}"
|
|
fi
|
|
|
|
# Add new configuration
|
|
echo -e "${BLUE}→ Adding SSH configuration...${NC}"
|
|
|
|
cat >> "$SSH_CONFIG" << 'EOF'
|
|
|
|
# Gitea Server git.etoth.dev
|
|
Host git.etoth.dev
|
|
HostName git.etoth.dev
|
|
User git
|
|
Port 222
|
|
StrictHostKeyChecking accept-new
|
|
|
|
EOF
|
|
|
|
chmod 600 "$SSH_CONFIG"
|
|
|
|
echo -e "${GREEN}✓ SSH configuration added!${NC}"
|
|
echo ""
|
|
|
|
# Check for SSH key
|
|
if [ ! -f "$SSH_DIR/id_ed25519" ] && [ ! -f "$SSH_DIR/id_rsa" ]; then
|
|
echo -e "${YELLOW}⚠ No SSH key found!${NC}"
|
|
echo ""
|
|
read -p "Do you want to create a new SSH key? (y/n): " CREATE_KEY
|
|
|
|
if [ "$CREATE_KEY" == "y" ] || [ "$CREATE_KEY" == "Y" ]; then
|
|
echo ""
|
|
read -p "Your email address: " EMAIL
|
|
ssh-keygen -t ed25519 -C "$EMAIL" -f "$SSH_DIR/id_ed25519"
|
|
echo ""
|
|
echo -e "${GREEN}✓ SSH key created!${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}Your public key:${NC}"
|
|
echo "----------------------------------------"
|
|
cat "$SSH_DIR/id_ed25519.pub"
|
|
echo "----------------------------------------"
|
|
echo ""
|
|
echo "Add this key to Gitea:"
|
|
echo " Settings → SSH/GPG Keys → Add Key"
|
|
echo ""
|
|
fi
|
|
fi
|
|
|
|
# Test connection
|
|
echo ""
|
|
read -p "Do you want to test the connection? (y/n): " TEST
|
|
|
|
if [ "$TEST" == "y" ] || [ "$TEST" == "Y" ]; then
|
|
echo ""
|
|
echo -e "${BLUE}→ Testing connection to git.etoth.dev...${NC}"
|
|
echo ""
|
|
ssh -T git@git.etoth.dev 2>&1 || true
|
|
echo ""
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}========================================"
|
|
echo -e " Setup completed successfully!"
|
|
echo -e "========================================${NC}"
|
|
echo ""
|
|
echo "You can now use Git:"
|
|
echo ""
|
|
echo " git clone git@git.etoth.dev:user/repo.git"
|
|
echo " git push"
|
|
echo " git pull"
|
|
echo ""
|
|
echo "More information:"
|
|
echo " Show SSH config: cat ~/.ssh/config"
|
|
echo " Edit SSH config: nano ~/.ssh/config"
|
|
echo ""
|