---
title: "Connecting to a remote computer"
author: Franklin Bristow
---
Connecting with SSH
===================
::: outcomes
* [X] Connect to a remote computer using `ssh`.
:::
You opened your terminal *briefly* in [week 2] to install and run Pandoc to
convert your Markdown-formatted plain text document into a `.docx` file.
Your terminal isn't just for running Pandoc: terminals can be used to run many
different programs, including running programs that will let you connect to
other computers and run programs on *those* computers.
::: warning
These instructions assume that you are connecting to a remote computer when you
are on campus connected to U of M WiFi. If you are trying to do this from home,
you first need to install, configure, and connect to the U of M's VPN. You can
find instructions for installing, configuring, and connecting to the U of M's
VPN on [IST's Virtual Private Network (VPN) page].
:::
If you're on campus connected to U of M WiFi or you're off campus but you've
installed the VPN and connected to it, let's open up our terminals and get
connected to a different computer.
[week 2]: ../week02/lecture.html
[IST's Virtual Private Network (VPN) page]:
https://umanitoba.ca/computing/ist/connect/virtualpn.html
Open your terminal
------------------
We opened our terminals in week 2. If you forget how to open your terminal (and
it's totally OK if you do!), refer back to the notes on [verifying that Pandoc
is installed].
[verifying that Pandoc is installed]:
../week02/lecture.html#verifying-that-pandoc-is-installed
Connect to a remote computer
----------------------------
Now that your terminal is open, let's connect to a remote computer.
Just like we used the `pandoc` command to run Pandoc, we need to run a command
to connect to a remote computer. The command that we run to connect to a remote
computer is called `ssh`.
::: aside
`ssh` stands for **S**ecure **Sh**ell. Really formally: [SSH] is a "protocol",
an agreed upon way that two computers can talk to each other. SSH consists of a
server (a program running on remote computers waiting for connections) and a
client (the program running on your computer trying to connect to the remote
computer).
Before SSH was [Telnet], but Telnet wasn't secured in any way (someone could
trivially eavesdrop on your connection to the remote computer).
[SSH]: https://en.wikipedia.org/wiki/Secure_Shell
[Telnet]: https://en.wikipedia.org/wiki/Telnet
:::
When we're connecting to a remote computer we need to have some information to
tell the program on our computer how to connect to the remote computer, and some
information that we're going to use to identify ourself.
::: checklist
Before you start connecting to a remote computer, you need:
1. [ ] The **name and location** of the remote computer (an address).
2. [ ] Our **username** on the remote computer (how we identify ourselves to the
computer).
3. [ ] Our **password** on the remote computer (how we prove our identity to the
computer).
:::
Here's what you need to know to connect to the U of M CS computer systems.
1. [X] The **name and location** (address) of the remote computer for the CS
department is
```
aviary.cs.umanitoba.ca
```
::: aside
Aviary is not actually a real computer, but instead is an address for
**many** computers. Each time you connect to the address
`aviary.cs.umanitoba.ca`, you will be redirected to a different computer
named for a specific bird (e.g., `pelican.cs.umanitoba.ca`).
Aviary is a [round-robin DNS] name. Get it??? Round-**robin** :bird:. An
[aviary] is a big bird house! It's funny! It's a joke!
[aviary]: https://en.wikipedia.org/wiki/Aviary
[round-robin DNS]: https://en.wikipedia.org/wiki/Round-robin_DNS
:::
2. [X] Your **username** on this remote computer is your UMNetID (the part of
your @myumanitoba.ca e-mail address before @myumanitoba.ca).
3. [X] Your initial default **password** is your student number. You will be
required to change this the first time you log in to aviary.
Now that you've got that information we can actually start connecting to a
remote computer. When we're connecting to remote computers, we're going to use
the `ssh` command and tell `ssh` how to connect to the remote computer. Connecting
to a remote computer will always look like this:
::: example
```bash
ssh you@name.remote.ca
```
* `you` is where you put your **username**. Replace `you` with *your* username.
* `name.remote.ca` is where you put the **name and location** of the remote
computer. Replace `name.remote.ca` with the address you want to connect to.
If I want to connect to Aviary, my username is `fbristow` and the address is
`aviary.cs.umanitoba.ca`, so:
```bash
ssh fbristow@aviary.cs.umanitoba.ca
```
:::
When you press Enter on your keyboard, the very first time you
connect to a system, `ssh` is going to ask you if it's safe to connect:
```
The authenticity of host 'aviary.cs.umanitoba.ca (130.179.28.114)' can't be established.
ED25519 key fingerprint is SHA256:XXXXXXX.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```
This is a pretty scary looking warning! The summary of this is that `ssh` is
telling you that it doesn't recognize the computer you're trying to connect to.
When you're connecting to Aviary, you *may* see this warning more than once. You
can safely enter `yes` (and you must enter `yes`, not just `y`) and press enter.
Next, `ssh` is going to ask you to enter your password. Type in your password,
but note that you won't see any feedback as you're typing (you won't see any `*`
or dots), but type in your password, then press Enter on your
keyboard again. If everything's worked out, you should be connected to the
remote computer :tada:!
::: example
Here's what I see when I connect to the CS Department's aviary.
```bash
ssh fbristow@aviary.cs.umanitoba.ca
Password:
[fbristow@hawk ~]>
```
This time I'm connected to a computer named `hawk`, you could be connected to
[one of many bird machines]. You can disconnect from a remote computer by typing
the command `exit` on your keyboard, then pressing Enter.
[one of many bird machines]:
https://linux-www.cs.umanitoba.ca/cgi-bin/man?machines
:::