Dies ist etwas, worüber ich vor einiger Zeit nachgesehen und einige nützliche Informationen gefunden habe … aber jetzt, wo ich es tatsächlich tun muss, kann ich die Anleitung, die ich gesehen habe, natürlich nicht mehr finden.
Wie dem auch sei, hier ist die Situation. Ich habe ein Programm, das über SSH mit einem Ncurses-Menü ausgeführt wird. Ich möchte, dass Benutzer sich über SSH bei diesem Programm anmelden können, aber nur bei diesem Programm.
Was muss ich tun, damit dieses Szenario möglich ist?
- Benutzer öffnet Putty
- Der Benutzer meldet sich mit seinem Benutzernamen und Passwort beim Linux-Server an
- Beim Einloggen gelangen sie direkt zu diesem Programm
- Im Falle einer Programmschließung, eines Absturzes, eines Abbruchs usw. wird der Benutzer zwangsweise vom System abgemeldet.
Mein Ziel ist es, sie daran zu hindern, überhaupt eine Befehlszeile zu sehen, und sie auf dieses Programm zu beschränken. Ist das möglich? Wie gehe ich vor/würde ich dabei vorgehen?
Antwort1
Dies wird auch als Captive-Login bezeichnet.
Hängen Sie an die Datei ~/.profile des Benutzers eine Programmausführung und ein Ende an.
exec /usr/local/bin/program
exit
Clevere Benutzer wissen, dass sie in ihrem SSH-Client einen Befehl eingeben können, der nicht die erwartete Shell ist. Verhindern Sie das mit ForceCommand in Ihrer SSHD-Konfiguration:
Kraftbefehl
Erzwingt die Ausführung des durch ForceCommand angegebenen Befehls und ignoriert dabei alle vom Client bereitgestellten Befehle und ~/.ssh/rc, falls vorhanden. Der Befehl wird über die Anmeldeshell des Benutzers mit der Option -c aufgerufen. Dies gilt für die Ausführung von Shells, Befehlen oder Subsystemen. Dies ist besonders nützlich innerhalb eines Match-Blocks.
Match Group programusers
ForceCommand /usr/local/bin/program