---
# System prepended metadata

title: SSH Key

---

# SSH Key and Config

Why use SSH keys?
* Login to the remote server without entering a password

Why use SSH config?
* Simplify the SSH process with shorter commands

:::success
Let's open your terminal or PowerShell in your computer before we start.
:::

### 1. Create SSH key

Use the following command to create SSH key.
```
ssh-keygen
```
After running the command, you'll see the following output:
```
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cial1/.ssh/id_rsa):
```
Press `Enter` to use the default path.
```
Enter passphrase (empty for no passphrase): 
```
Press `Enter` again to ignore passphrase.
```
Enter same passphrase again:
```
Press `Enter` again to confirm ignoring passphrase.


![](https://hackmd.io/_uploads/B1mSclp-T.png)
(The SSH Key generated by each individual is unique.)

### 2. Add public key to remote server
First, we need to enter `.ssh` directory
```
cd ~/.ssh
```
If you use `ls` command, you will see `id_rsa.pub`, that is your SSH public key.

Use the following command to copy your SSH public key to the remote server.

```
scp id_rsa.pub [username]@[ip address]:~/.ssh/authorized_keys
```
:::warning
Make sure to replace `[username]` with your actual username and replace `[ip address]` with the server's actual ip address.

For example :
```
scp id_rsa.pub F74114710@140.116.246.48:~/.ssh/authorized_keys
```
:::
After running this command, you may need to enter your password for server authentication.

:::info
Finally, you can SSH to the server without typing a password.🎉
```
ssh [username]@[ip address]
```
:::
### 3. Setup SSH config
Create a file named `config` at `~/.ssh/config`
```
vim ~/.ssh/config
```
:::success
If your computer runs on Windows and does not have `Vim` installed, you can use the following commands(in PowerShell):
```
New-Item ~/.ssh/config
~/.ssh/config
```
Then choose the editor you like.
:::

Paste the following text inside the `config` file

```
 HOST            pd1
 Hostname        [ip address]
 User            [username]
```
:::warning
Make sure to replace `[ip address]` with the server's actual ip address and replace `[username]` with your actual username.

For example:
```
 HOST            pd1
 Hostname        140.116.246.48
 User            F74114710
```
:::
Remember to save the file.

------------------------
Now, you can use the following command to connect to the server
```
ssh pd1
```
![](https://hackmd.io/_uploads/Hysx3L6-6.png)

</br>
<p class="text-center"><font size=5>Congratulation!🎉</font></p>



<!-- 
[Interface]
PrivateKey = OJKknnJs12x8ESCCSCgKDJUSLY1gMGH+rzT+vyJBmUI=
Address = 10.19.49.57/32
DNS = 172.24.157.208

[Peer]
PublicKey = beqEMF9PiU+mpKVK/C2DGTXX1iEFdTkwjo9cylfxthY=
PresharedKey = LdpWyHggphCBMbKtpJrq836v9J3D14+29v3hVBSD73U=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = wireguard.ccns.io:51820
-->
