SSH and Git Setup

Authenticate to GitHub using GitHub CLI

This section streamlines the authentication process to GitHub using the GitHub CLI gh, which simplifies the SSH setup.

You can find the GitHub CLI installation instructions here.

  1. Run gh auth login to begin the authentication process.
  2. When prompted, select SSH as the preferred protocol for Git operations.
  3. If you don't already have an SSH key, gh will prompt you to generate one. Follow the on-screen instructions to create a new SSH key.
  4. gh will automatically add your SSH key to your GitHub account. Follow any additional prompts to complete the process.
  5. After completing the setup, run gh auth status to check if you're successfully authenticated.

If you want to do it manually, check the GitHub page: Generating a new SSH key and adding it to the ssh-agent

Verify GitHub User Information (Optional)

It's good practice to ensure your Git identity is correctly set:

  1. Check Git Configurations: Run git config --list to see your Git configurations, including user name and email.
  2. Set Git User Information If Not Set: If not already set, configure your Git user information:
git config --global user.email "you@gatech.edu"
git config --global user.name "Your Name"

Replace with your GitHub email and name.

Configuring SSH Host Aliases

It is useful to setup your ~/.ssh/config on your host as follows:

Host pace
    HostName login-phoenix.pace.gatech.edu
    User your_username

Host pace-interactive
    HostName atl1-1-02-007-30-1.pace.gatech.edu
    User your_username
    ProxyJump pace

This adds host aliases pace and pace-interactive.

Make sure to add your SSH key to the ~/.ssh/authorized_keys section after logging into PACE via ssh your_username@login-phoenix.pace.gatech.edu.

You can now access PACE using ssh pace and it will automatically log you in. The pace-interactive alias will use the login node as a jump host, allowing you to run VS Code sessions on interactive sessions.

Read more about SSH config files: ssh_config(5) manual page

Add Authorized Keys to PACE

# Log into PACE
ssh pace

# Create .ssh directory if it doesn't exist
mkdir -p ~/.ssh

# Create or append to authorized_keys file
nano ~/.ssh/authorized_keys

# Paste your public key, save and exit (Ctrl+O, Enter, Ctrl+X)

# Set correct permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# Test your connection from your local machine
ssh pace

Updating pace-interactive Alias

Allocate a new interactive session on PACE. For example:

salloc --account=paceship-dsgt_clef2025 --nodes=1 --ntasks=1 --cpus-per-task=8 --mem-per-cpu=4G --time=2:00:00 --qos=inferno

Make sure to keep this terminal around. Get the hostname from the session:

$ hostname
atl1-1-02-007-30-1.pace.gatech.edu

Copy the hostname and update your ~/.ssh/config file:

Host pace-interactive
    HostName atl1-1-02-007-30-1.pace.gatech.edu
    User your_username
    ProxyJump pace

Then you can SSH via ssh pace-interactive from your host machine through the terminal or VS Code.

Note that this will also allow you to port forward any services running on these nodes.

Advanced SSH Configuration

Port Forwarding for Development

Common port forwarding scenarios for research work:

# Forward Jupyter notebook (local 8888 -> PACE 8888)
ssh -L 8888:localhost:8888 pace-interactive

Working with Git on PACE

Basic Git Setup on PACE

# SSH to PACE
ssh pace

# Load Git module (if using module system)
module load git

# Configure Git if not done already
git config --global user.name "Your Name"
git config --global user.email "your.email@gatech.edu"

# Set VS Code as default editor if available
git config --global core.editor "code --wait"

# Verify configuration
git config --list

Clone and Work with Repositories

# Clone your research repository
git clone git@github.com:username/your-research-project.git

# Or clone using the GitHub CLI
gh repo clone username/your-research-project