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:
AlenikaKoda authored and GitHub committed 2026-08-21 19:04:07 -03:00
1 parent dbd52c0412
commit 1e223df605
1 file changed
+24 -59
+24 -59
View File
@@ -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 ```bash
sudo ./create_ssh_service.sh dev_team 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.