4
0

setup-ssh.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. # === SSH Setup for DevContainer ===
  3. # Solves: VS Code Git extension + terminal SSH with passphrase
  4. # Fixed socket path that VS Code can find via remoteEnv
  5. SSH_SOCK="/tmp/ssh-agent-vscode.sock"
  6. # --- Copy SSH keys from host ---
  7. NODE_SSH="/home/node/.ssh"
  8. if [ -d "/tmp/host-ssh" ]; then
  9. mkdir -p "$NODE_SSH"
  10. cp /tmp/host-ssh/* "$NODE_SSH/"
  11. chmod 700 "$NODE_SSH"
  12. chmod 600 "$NODE_SSH"/id_* 2>/dev/null
  13. chmod 644 "$NODE_SSH"/*.pub "$NODE_SSH"/known_hosts "$NODE_SSH"/config 2>/dev/null
  14. echo "✓ SSH keys copied to $NODE_SSH"
  15. else
  16. echo "✗ /tmp/host-ssh not found — SSH mount missing"
  17. fi
  18. # --- Start ssh-agent with fixed socket ---
  19. # Remove old socket if it exists but the agent is dead
  20. if [ -S "$SSH_SOCK" ]; then
  21. if ! SSH_AUTH_SOCK="$SSH_SOCK" ssh-add -l &>/dev/null; then
  22. rm -f "$SSH_SOCK"
  23. fi
  24. fi
  25. # Start new agent if necessary
  26. if [ ! -S "$SSH_SOCK" ]; then
  27. eval $(ssh-agent -a "$SSH_SOCK") > /dev/null
  28. echo "✓ SSH agent started on $SSH_SOCK"
  29. else
  30. export SSH_AUTH_SOCK="$SSH_SOCK"
  31. echo "✓ SSH agent already running"
  32. fi
  33. # --- Add to .bashrc for terminals ---
  34. if ! grep -q "SSH_AGENT_VSCODE" ~/.bashrc 2>/dev/null; then
  35. cat >> ~/.bashrc << 'BASHRC'
  36. # SSH_AGENT_VSCODE
  37. export SSH_AUTH_SOCK="/tmp/ssh-agent-vscode.sock"
  38. # Add key if agent is running but no keys loaded
  39. if [ -S "$SSH_AUTH_SOCK" ]; then
  40. if ! ssh-add -l &>/dev/null; then
  41. echo "Run 'ssh-add' to load SSH key"
  42. fi
  43. fi
  44. BASHRC
  45. echo "✓ .bashrc updated"
  46. fi
  47. echo ""
  48. echo "==========================================="
  49. echo "SSH SETUP COMPLETE"
  50. echo "==========================================="
  51. echo ""
  52. echo "IMPORTANT: Open a terminal and run:"
  53. echo " ssh-add ~/.ssh/id_ed25519"
  54. echo ""
  55. echo "You will be asked for your passphrase ONCE."
  56. echo "After that, both terminal AND VS Code Git will work."
  57. echo "==========================================="