Connecting to Linux Systems
All Cyberinfrastructure Research Computing (CIRC) High Performance Computing (HPC) systems, as well as all other CIRC-maintained research computing systems, run Linux. Connecting to these systems isn’t like logging in to a Windows or Mac (or even standard Linux desktop!) system, and will require interacting with the command-line. Depending on what operating system your computer runs, the process for connecting to a Linux system is different.
Prerequisites
UT Dallas VPN
Before attempting ANY connection to a UT Dallas resource, you need to be on the UT Dallas Virtual Private Network (VPN). If you need assistance with connecting to the VPN, contact the UTD-OIT help desk as the VPN is not a resource that OIT-CIRC is responsible for. If you attempt a connection while not on the VPN, you will get a Could not resolve hostname
error. If you have a system with the same hostname on your local network, you’ll log into that one and not the requested CIRC resource.
Terminal Client
The standard interface method of most CIRC resources is the command-line interface. When logged in, a user is provided with a command prompt, also known as a shell. Typing commands into the shell results in outputs (or lack thereof if not properly used). To access the command-line, we use a terminal application. The terminal application you use depends on personal preference and operating system.
Linux
All Linux distributions have a built-in terminal or are command-line interface only. All you need to do to access the terminal is open the terminal app for your distribution! The name will vary depending what desktop environment is used, but a program search for "terminal" will generally work.
MacOS
As with Linux, all recent MacOS versions have a built-in terminal application, called Terminal. By default, the Terminal application isn’t readily visible on the Dock, so to start the application you can either:
-
Open LaunchPad and locate the icon (or search for the program in the search bar!)
-
Use the Spotlight Search (command + space) and type
terminal
and hitEnter
There are also many alternative terminal applications for Mac that provide more features than the standard Apple Terminal application. However, installation and use of those is up to user preference and is not covered here.
Windows
While Windows does NOT have a standard "UNIX-like" terminal, it does have two built-in command prompts: PowerShell and Command Prompt. To start these, open the Start
menu and type cmd
or powershell
for Command Prompt or Powershell, respectively. These provide an interface to connect to CIRC systems, however they lack many UNIX functionalities. Here are several other methods of connecting:
-
MobaXTerm provides a "native" UNIX shell with a built-in package manager.
-
PuTTY provides a simple interface for connecting to external systems, but no native shell.
-
Windows Subsystem for Linux creates a Linux container on your system, which will have a true Linux command line interface already when the "program" is started.
As with Mac, which terminal application is used is completely up to the user, however PowerShell and Command Prompt are highly limited in functionality, essentially limited to just connecting to systems which is the bare minimum in terms of usability.
Connecting
Once you’re 1) on the UT Dallas VPN and 2) have a terminal client installed, it’s time to connect. The standard method for connecting to any Linux system remotely is via Secure Shell (ssh). To initiate an ssh connection, only one command is needed:
ssh <USERNAME>@<HOSTNAME>
where <USERNAME>
is your UT Dallas NetID and <HOSTNAME>
is the name of the system you’re attempting to log in to. The terminal will prompt you for a password.
The command prompt will not display your password or any placeholders. This is for security purposes and your keystrokes are still being entered! |
For example, to connect to the CIRC resource Ganymede:
$ ssh user@ganymede.utdallas.edu
user@ganymede.utdallas.edu's password:
In most cases the @utdallas.edu isn’t necessary, but in this example it’s appended.
Enter your NetID password and the connection will be successful:
|
Last login: Fri Feb 25 08:37:02 2022 from mobile-workstation.utdallas.edu
---------------------------------------------------------------------------------------
Welcome to ganymede.utdallas.edu!
This system uses modules to control your environment variables, and you will need to
load the correct modules in order for your code to run.
module avail shows you the modules that are available
module load xxx loads the xxx module into your current shell
sinfo shows the status of the queues
squeue shows the jobs in the queue (running and waiting)
"man module" and "man slurm" will give you all the details. Have fun!
If you need help, the OIT-CI team support email address is circ-assist@utdallas.edu.
This system uses Slurm. Detailed documentation on using a Slurm system can be found at:
http://docs.oithpc.utdallas.edu/
---------------------------------------------------------------------------------------
Disk quotas for user user:
==================== ============ ================ ============
Disk Usage Soft Limit Hard Limit
==================== ============ ================ ============
/home/user 4521M 20000M 30000M
==================== ============ ================ ============
[user@ganymede ~]$
You’re now connected to the CIRC resource!
SSH Keys
An added functionality of a native "UNIX-like" terminal is SSH keys. SSH keys are secure…keys!…that allow login of a Linux system without typing central authentication credentials (like your UTD NetID password). SSH keys can be transferred between systems, so you could use the same password (or lack thereof) to log in to every system you wanted to.
Generating Your Key
The following instructions will work on: * Linux or other UNIX-like operating systems * MacOS * Windows Subsystem for Linux (WSL) They are not compatible with Windows Powershell. |
Creation of SSH keys is simple. In a terminal, run:
[user@host ~]$ ssh-keygen -t ed25519
This command will start the key generating wizard. On the following step, simply hit Enter
to save the key to your ~/.ssh
directory:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
|
Now, enter a password for the key (if wanted). This doesn’t have to be your NetID password; there are no requirements for an SSH key password. You will need to enter the password twice:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Now the key will be saved:
Your identification has been saved in /home/user/.ssh/id_ed25519.
Your public key has been saved in /home/user/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:<redacted_string>> user@host.utdallas.edu
The key's randomart image is:
<redacted>
The only key you will ever put anywhere else is the PUBLIC KEY (in our case, /home/user/.ssh/id_ed25519.pub).
DO NOT EVER, UNDER ANY CIRCUMSTANCES, SHARE YOUR PRIVATE KEY OR PUT IT ANYWHERE ELSE. |
Using Your Key
There are multiple methods to copy the public key to another system.
Method 1: Cat, Copy, Touch, Edit, Paste
This method is somewhat time consuming, but works everywhere, guaranteed. First, we cat
the key:
[user@host ~]$ cat .ssh/id_ed25519.pub
ssh-ed25519 <redacted>> user@host.utdallas.edu
Now, copy the output of the cat
command to your system’s clipboard. Next, log in to the system you want to add your key to (in our case, host2.utdallas.edu):
$ ssh user@host2.utdallas.edu
user@host2.utdallas.edu's password:
[user@host2 ~]$
Now that we’re logged in, we need to check for a ~/.ssh directory and create it with mkdir
if not present:
[user@host2 ~]$ ls ~/.ssh
ls: cannot access .ssh: No such file or directory
[user@host2 ~]$ mkdir ~/.ssh
Now, if it does not exist already, add a file called known_hosts
to that directory:
[user@host2 ~]$ touch ~/.ssh/known_hosts
You can view the files in your ~/.ssh directory by typing `ls ~/.ssh/
|
Now, add your public key to the known_hosts
file:
[user@host2 ~]$ echo "ssh-ed25519 <redacted>> user@host.utdallas.edu" >> ~/.ssh/known_hosts
Your key is now added. When logging into the system, you should see:
$ ssh user@host2.utdallas.edu
Enter passphrase for key '/home/user/.ssh/id_ed25519':
[user@host2 ~]$
Method 2: ssh-copy-id Command
This method is much easier. In a terminal, type:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host2
This will output:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@host2's password:
Enter your login password (remember, in most cases your UTD NetID password) and the output will be:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@host2'"
and check to make sure that only the key(s) you wanted were added.
Your key is now on the system. Once again, verify with:
$ ssh user@host2.utdallas.edu
Enter passphrase for key '/home/user/.ssh/id_ed25519':
[user@host2 ~]$