GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zugriff nur über SSH-Tunneling

Lösung 1:

Ja, verwenden Sie einfach /bin/false als Shell und weisen Sie den Benutzer an, den tunnelnden SSH-Prozess zu starten, ohne einen Remote-Befehl auszuführen (d. h. den -N Flag für OpenSSH):

ssh -N -L 1234:target-host:5678 ssh-host

Lösung 2:

Fügen Sie in der Datei .ssh/authorized_keys des Benutzers etwa Folgendes ein:

permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...

Im Grunde befinden sich die Steuerelemente also vor dem öffentlichen ssh-Schlüssel des Benutzers, getrennt durch ein Leerzeichen. In diesem Beispiel dürfen Verbindungen, die den spezifischen öffentlichen Schlüssel verwenden, SSH-Portweiterleitungen nur zum MySQL-Server von 192.168.1.10 und zum Webserver von 10.0.0.16 durchführen und erhalten keine Shell (no-pty). Sie fragen speziell nach der Option "no-pty", aber die anderen können auch nützlich sein, wenn der Benutzer nur zu bestimmten Servern tunneln soll.

Weitere Optionen für die Datei "authorized_keys" finden Sie in der Manpage für sshd.

Beachten Sie, dass die Erfahrung des Benutzers etwas seltsam aussehen kann:Wenn er sich per SSH einloggt, sieht es so aus, als würde die Sitzung hängen bleiben (da er kein pty erhält). Das ist okay. Wenn der Benutzer die Portweiterleitung beispielsweise mit "-L3306:192.168.1.10:3306" angegeben hat, bleibt die Portweiterleitung bestehen.

Probieren Sie es auf jeden Fall aus.

Lösung 3:

Geben Sie dem Benutzer eine Shell, mit der er sich nur abmelden kann, z. B. /bin/press_to_exit.sh

#!/bin/bash
read -n 1 -p "Press any key to exit" key

Auf diese Weise kann er bei aktiven Tunneln so lange angemeldet bleiben, wie er möchte, aber keine Befehle ausführen. Ctrl-c schließt die Verbindung.

Lösung 4:

Weisen Sie eine Shell zu, die es dem Benutzer nicht erlaubt, sich anzumelden.

zB

#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0

würde verhindern, dass sie einen Shell-Prompt erhalten, und ihnen ein Timeout von 60 Sekunden geben - wenn 60 Sekunden lang keine Verbindung aktiv ist, wird sie beendet und dadurch vollständig getrennt (erhöhen Sie die Anzahl entsprechend den Anforderungen).

Sie können auch keinen entfernten Befehl ausführen, weil diese Shell sie nicht zulässt.


Linux
  1. Ssh – Hinzufügen eines Benutzers, der Skripte nur remote ausführen kann?

  2. Virtualbox nur bestimmten Benutzern Zugriff gewähren?

  3. Deaktivieren Sie die direkte Root-Anmeldung und den Benutzerzugriff über SSH auf den Server

  4. So beschränken Sie den su-Zugriff auf einen Benutzer nur durch PAM in Linux

  5. Wie kann man einen SSH-Benutzer darauf beschränken, nur SSH-Tunneling zuzulassen?

So verwenden Sie SSH-Tunneling für den Zugriff auf eingeschränkte Server

Richten Sie den Remote-Shell-Zugriff (RSH) unter CentOS 6 / RHEL 6 ein

So beschränken Sie den Zugriff des Benutzers auf das Linux-System

So gewähren oder verweigern Sie einem bestimmten Benutzer oder einer bestimmten Gruppe in Linux den SSH-Zugriff

So beschränken Sie den SSH-Zugriff auf bestimmte Benutzer in Linux

So erstellen Sie einen Nur-SFTP-Benutzer in Debian 11