This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

superconfig / tools / tor-ssh-service / tor-ssh-service.sh
2.8 kB 121 lines
1#!/usr/bin/env bash 2set -euo pipefail 3 4# Default SSH port 5SSH_PORT="${SSH_PORT:-22}" 6 7# Create temporary directory for this tor instance 8TOR_DIR=$(mktemp -d -t tor-ssh-service.XXXXXX) 9trap 'rm -rf "$TOR_DIR"' EXIT 10 11# Generate random ports 12SOCKS_PORT=$((9050 + RANDOM % 1000)) 13CONTROL_PORT=$((SOCKS_PORT + 1)) 14 15# Create hidden service directory with proper permissions 16mkdir -p "$TOR_DIR/hidden_service" 17chmod 700 "$TOR_DIR/hidden_service" 18 19# Create tor configuration 20cat > "$TOR_DIR/torrc" <<EOF 21DataDirectory $TOR_DIR/data 22SocksPort 127.0.0.1:$SOCKS_PORT 23ControlPort 127.0.0.1:$CONTROL_PORT 24Log notice file $TOR_DIR/tor.log 25RunAsDaemon 0 26 27# Hidden service configuration 28HiddenServiceDir $TOR_DIR/hidden_service 29HiddenServicePort 22 127.0.0.1:$SSH_PORT 30 31# Performance and reliability optimizations 32CircuitBuildTimeout 15 33LearnCircuitBuildTimeout 0 34NumEntryGuards 8 35KeepalivePeriod 60 36SocksTimeout 120 37 38# Reliability settings 39MaxCircuitDirtiness 600 40NewCircuitPeriod 30 41UseEntryGuards 1 42EOF 43 44echo "Starting Tor hidden service for SSH..." 45echo "SSH port: $SSH_PORT" 46echo "SOCKS port: $SOCKS_PORT" 47echo "" 48 49# Start tor in background 50tor -f "$TOR_DIR/torrc" & 51TOR_PID=$! 52 53# Function to cleanup tor process 54cleanup() { 55 if kill -0 "$TOR_PID" 2>/dev/null; then 56 kill "$TOR_PID" 2>/dev/null || true 57 wait "$TOR_PID" 2>/dev/null || true 58 fi 59 rm -rf "$TOR_DIR" 60} 61trap cleanup EXIT INT TERM 62 63# Wait for tor to bootstrap 64echo "Waiting for Tor to bootstrap..." 65for i in {1..300}; do 66 if grep -q "Bootstrapped 100%" "$TOR_DIR/tor.log" 2>/dev/null; then 67 echo "Tor bootstrapped successfully!" 68 break 69 fi 70 if [ "$i" -eq 300 ]; then 71 echo "Error: Tor failed to bootstrap" 72 exit 1 73 fi 74 sleep 0.5 75done 76 77# Wait for hidden service to be created 78echo "Waiting for hidden service..." 79for i in {1..60}; do 80 if [ -f "$TOR_DIR/hidden_service/hostname" ]; then 81 break 82 fi 83 if [ "$i" -eq 60 ]; then 84 echo "Error: Hidden service hostname not created" 85 exit 1 86 fi 87 sleep 1 88done 89 90# Display the onion address 91ONION_ADDRESS=$(cat "$TOR_DIR/hidden_service/hostname") 92echo "" 93echo "===============================================" 94echo "Tor SSH hidden service is running!" 95echo "" 96echo "Onion address: $ONION_ADDRESS" 97echo "" 98 99# Generate QR code for easy copying 100echo "QR Code for the onion address:" 101qrencode -t UTF8 "$ONION_ADDRESS" 102echo "" 103 104echo "To connect from another machine:" 105echo " torify ssh $ONION_ADDRESS" 106echo "" 107echo "Or with a specific user:" 108echo " torify ssh user@$ONION_ADDRESS" 109echo "" 110echo "Press Ctrl+C to stop the service" 111echo "===============================================" 112echo "" 113 114# Keep the service running 115while true; do 116 if ! kill -0 "$TOR_PID" 2>/dev/null; then 117 echo "Tor process died unexpectedly" 118 exit 1 119 fi 120 sleep 5 121done