Revise README for Multi-Instance SSH Server Manager
Updated README to reflect changes in naming and added details about instance management.
This commit is contained in:
1 parent
dbd52c0412
commit
1e223df605
1 file changed
+25
-60
+25
-60
@@ -1,78 +1,43 @@
|
|||||||
# Multi-Instance SSH Server Generator
|
|
||||||
|
|
||||||
A lightweight Bash script that automatically creates, configures, and manages completely isolated OpenSSH server instances on Linux.
|
# Multi-Instance SSH Server Manager
|
||||||
|
A lightweight Bash suite that automatically creates, configures, and safely removes completely isolated OpenSSH server instances on Linux.
|
||||||
Perfect for providing dedicated SSH access to specific teams, contractors, or applications without touching your primary server's SSH configuration.
|
Perfect for providing dedicated SSH access to specific users, teams, or applications without modifying your primary server's SSH configuration.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
* **User Restriction:** Prompts for a username during setup, optionally creates the user, and uses `AllowUsers` to restrict the instance exclusively to them.
|
||||||
* **Complete Isolation:** Each instance gets its own configuration directory (`/opt/custom_sshd/<name>`) and independent host keys.
|
* **Complete Isolation:** Each instance gets its own configuration directory (`/opt/custom_sshd/<name>`) and independent host keys.
|
||||||
* **Auto-Port Assignment:** Automatically scans for the next available port starting from `2222` to prevent collisions.
|
* **Auto-Port Assignment:** Automatically scans for the next available port starting from `2222` to prevent collisions.
|
||||||
* **Systemd Integration:** Generates a dedicated `systemd` service for each instance so they start on boot and auto-restart if they crash.
|
* **Systemd Integration:** Generates a dedicated `systemd` service for each instance so they start on boot and auto-restart if they crash.
|
||||||
* **Auto-Firewall:** Detects your active firewall (`ufw`, `firewalld`, or `iptables`) and automatically opens the required TCP port.
|
* **Auto-Firewall Management:** Detects your active firewall (`ufw`, `firewalld`, or `iptables`) to open the port on creation, and cleanly closes it on removal.
|
||||||
|
|
||||||
## Prerequisites
|
## Setup
|
||||||
|
Make both scripts executable:
|
||||||
* A Linux distribution using `systemd`
|
|
||||||
* Root privileges (`sudo`)
|
|
||||||
* `sshd` (OpenSSH Server) installed
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. **Make the script executable:**
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x create_ssh_service.sh
|
chmod +x create_ssh_service.sh
|
||||||
|
chmod +x remove_ssh_service.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Create a new SSH instance:**
|
## Creating an Instance
|
||||||
Pass the desired name of your instance as the only argument.
|
Pass the desired name of your instance as the argument. You will be prompted to specify (and optionally create) the user who is allowed to connect.
|
||||||
```bash
|
|
||||||
sudo ./create_ssh_service.sh dev_team
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ./create_ssh_service.sh contractor
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Connection Example:**
|
||||||
3. **Connect to your new instance:**
|
|
||||||
The script will output the assigned port (e.g., `2222`). Use it to connect:
|
|
||||||
```bash
|
```bash
|
||||||
ssh -p 2222 username@your-server-ip
|
ssh -p 2222 bob@your-server-ip
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Management & Maintenance
|
## Removing an Instance
|
||||||
|
|
||||||
|
To cleanly tear down an instance, close its firewall port, remove its systemd service, and optionally delete the user data:
|
||||||
|
```bash
|
||||||
|
sudo ./remove_ssh_service.sh contractor
|
||||||
|
```
|
||||||
|
|
||||||
|
## Manual Service Management
|
||||||
Every instance runs as its own systemd service named `custom-sshd-<instance_name>.service`.
|
Every instance runs as its own systemd service named `custom-sshd-<instance_name>.service`.
|
||||||
|
* **Check status:** `sudo systemctl status custom-sshd-contractor.service`
|
||||||
**Check status:**
|
* **View logs:** `sudo journalctl -u custom-sshd-contractor.service -f`
|
||||||
|
* **Restart:** `sudo systemctl restart custom-sshd-contractor.service`
|
||||||
```bash
|
|
||||||
sudo systemctl status custom-sshd-dev_team.service
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
**View live logs:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo journalctl -u custom-sshd-dev_team.service -f
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
**Restart the instance:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl restart custom-sshd-dev_team.service
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
**Completely remove an instance:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl disable --now custom-sshd-dev_team.service
|
|
||||||
sudo rm /etc/systemd/system/custom-sshd-dev_team.service
|
|
||||||
sudo rm -rf /opt/custom_sshd/dev_team
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
Note: If you uninstall, you will need to manually remove the port rule from your firewall.
|
|
||||||
Reference in new issue
Block a user