> For the complete documentation index, see [llms.txt](https://edsonha.gitbook.io/my-gitbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edsonha.gitbook.io/my-gitbook/security/ssh.md).

# SSH

Secure Shell

It is a protocol, similar to HTTPS, and it is a way for machines to communicate with one another.&#x20;

Three uses cases are SSH to Github, remote computer and server.&#x20;

The advantage of SSH is the use of encryption to ensure secure transfer of information between host and client. Host refers to the remote server you are trying to access and client is the the computer you are using to access the host

The foundation of SSH are

1. Diffie-Hellman Key Exchange - used only to share public key
2. Arrive at symmetric key and use this for communication because it is faster than asymmetric encryption
3. Hashing to make sure no message is tampered
4. Authentication using password or get authenticated using RSA which allows us to provide the identity of a person without a password.

SSH commands:

Open Gitbash and enter into shell

```
$ cd ~/.ssh
```

Create a new SSH key, using the provided email as a a label

```
$ ssh-keygen -t rsa -b 4096 -C "your_email@email.com"
```

You will be prompted to create a key and you may create different key for different platform. Passphrase is optional.

```
Enter file in which to save the key (/c/Users/Your_Name/.ssh/id_rsa):
/c/Users/Your_Name/.ssh/id_rsa_github
```

Start up the SSH-Agent and add RSA key to the SSH-Agent every time you start the terminal because it won't save them after you close the terminal

```
$ eval $(ssh-agent -s)
```

Add your SSH private key to the SSH-Agent

```
$ ssh-add ~/.ssh/id_rsa_github
```

To check and delete identities associated with the SSH-Agent

```
$ ssh-add -l  => List all identity
$ ssh-add -D  => Delete all identity
```

Add SSH key to the github account, under "Setting => SSH and GPG keys"

```
$ clip < ~/.ssh/id_rsa_github
```

Testing your SSH connection

```
$ ssh - T git@github.com
```
