Ist es möglich, ssh (unter Linux) so zu konfigurieren, dass nur der Tunnelzugriff zugelassen wird? Das heißt, Benutzer können Tunnel einrichten, aber keine Shell- / Zugriffsdateien abrufen.
linux
ssh
ssh-tunnel
Zweite
quelle
quelle
-N
, haben sie Shell-Zugriff. Dies löst das Problem nicht wirklich und ist gefährlich./bin/false
eine Shell verfügen , haben Sie keinen Shell-Zugriff, da jede Anmeldesitzung sofort beendet wird.Fügen Sie in die .ssh / authorized_keys-Datei des Benutzers Folgendes ein:
Im Grunde genommen befinden sich die Steuerelemente also vor dem öffentlichen ssh-Schlüssel des Benutzers, der durch ein Leerzeichen getrennt ist. In diesem Beispiel dürfen Verbindungen, die den spezifischen öffentlichen Schlüssel verwenden, die SSH-Portweiterleitung nur zum MySQL-Server von 192.168.1.10 und zum Webserver von 10.0.0.16 ausführen. Sie 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 auf der Manpage für sshd .
Beachten Sie, dass die Benutzererfahrung etwas seltsam aussehen kann: Wenn sie sich einloggen, sieht es so aus, als würde die Sitzung hängen (da sie keine Pty bekommen). Das ist ok. Wenn der Benutzer die Portweiterleitung beispielsweise mit "-L3306: 192.168.1.10: 3306" angegeben hat, ist die Portweiterleitung weiterhin aktiv.
Probieren Sie es auf jeden Fall aus.
quelle
no-pty
verhindert nicht den Zugriff auf die Shell, sondern verleiht der Shell lediglich keine Pty. Die Eingabeaufforderung wird nicht angezeigt (dh "scheint zu hängen"), aber Sie können trotzdem einwandfreie Befehle erteilen. Sie benötigen diecommand="..."
Option in,.ssh/authorized_keys
wenn Sie den Shell-Zugriff von dort aus einschränken möchten.Geben Sie dem Benutzer eine Shell, mit der er sich nur abmelden kann, z
/bin/press_to_exit.sh
Auf diese Weise kann er mit aktiven Tunneln so lange eingeloggt bleiben, wie er möchte, aber keine Befehle ausführen.
Ctrl-c
trennt die Verbindung.quelle
Weisen Sie eine Shell zu, bei der sich der Benutzer nicht anmelden kann.
z.B
Dies würde verhindern, dass sie eine Shell-Eingabeaufforderung erhalten, und ihnen eine Zeitüberschreitung von 60 Sekunden gewähren. Wenn 60 Sekunden lang keine Verbindung besteht, wird sie beendet und die Verbindung wird vollständig getrennt (erhöhen Sie die Anzahl entsprechend den Anforderungen).
Sie können auch keinen Remote-Befehl ausführen, da diese Shell sie nicht zulässt.
quelle
logout
" auf ein normales Skript ./sbin/nologin
, die Sie mit einer benutzerfreundlichen Nachricht in anpassen können/etc/nologin.txt
.Meine Lösung besteht darin, dem Benutzer, der möglicherweise nur Tunneling ausführt , ohne eine interaktive Shell bereitzustellen , diese Shell in / etc / passwd auf / usr / bin / tunnel_shell zu setzen .
Erstellen Sie einfach die ausführbare Datei / usr / bin / tunnel_shell mit einer Endlosschleife .
Nutzen Sie zusätzlich die Option
AllowGroups
undMatch Group
.Vollständig erklärt hier: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
quelle