website/content/blog/sshconnectionsharing.md

31 lines
1.2 KiB
Markdown

---
title: "SSH Connection Sharing"
date: 2020-06-05T16:39:24-04:00
draft: false
tags: ["SSH"]
medium_enabled: true
---
If you're like me, you open a lot of different terminal sessions throughout your day. When it comes to SSH, I want these different sessions to share a connection rather than creating a new one each time.
To accomplish this, I have the following in my `~/.ssh/config` file.
```
ControlMaster auto
ControlPersist no
ControlPath ~/.ssh/sockets/socket-%r@%h:%p
```
| Option | Description |
| ---------------- | ------------------------------------------------------------ |
| `ControlMaster` | Allows connection sharing |
| `ControlPersist` | `yes` to keep connection up even when no clients are connected.<br />`2s` (or custom timeout) to keep the connection up for 2 seconds after no clients are connected.<br />`no` to disconnect immediately |
| `ControlPath` | Where to store connection information. This should not be writable by other users. |
You'll also need to create the `sockets` folder if you don't have it already setup.
```bash
mkdir ~/.ssh/sockets
chmod go-w ~/.ssh/sockets
```