SSHD Login --> Applikation --> Logout

dettus

Bicycle User
Hallo!

Folgendes, vielleicht koennt ihr mir gute Tips geben...
Ich plane einen Spielserver einzurichten.
Und zwar schwebt mir vor, dass ich oeffentlich zugaenglich einen SSH-Zugang bereitstelle, auf dem man unter sich unter einem Usernamen einloggt, und danach wird keine Shell, sondern eine Applikation gestartet.

Spontan wuerde ich sagen, dass ich "nur" in der /etc/passwd die Applikation als Login-Shell eintragen muss, oder mache ich mir das zu einfach?

Thomas
 

KobRheTilla

used register
Hi,

man kann in der Datei ~/.ssh/authorized_keys für jeden Schlüssel ein Kommando vorgeben. Dann wird keine Shell gestartet.
Siehe dazu die Manpage von sshd(8), Absatz "AUTHORIZED_KEYS FILE FORMAT".

Rob
 

Yamagi

Possessed With Psi Powers
Teammitglied
@KobRheTilla sagt es. Es über ssh zu machen hat auch gleich den Vorteil, dass es etwa die Hälfte der mindestens tausend Wege aus dem gestarteten Programm auszubrechen verhindert. Wenn du es doch mit einer Shell machen willst, was nicht zu empfehlen ist: Im Prinzip geht es das Programm einfach als Shell zu setzen. Man muss allerdings beachten, dass das Login-Programm erwartet, dass sich das aufgerufene Programm auch tatsächlcih wie eine Shell verhält. Das Minimum ist, dass es - als erstes Argument als Indikator einer Login-Shell akzeptiert . Es kann die Option einfach verschlucken, darf sich nur nicht beenden. Außerdem darf Programm nicht mit eventuell vorhandener Terminalausgabe kollidieren und sich nicht am bereits gebauten Environment sterben. Der beste Weg all das sicher zu erreichen ist, eine Shell zwischenzuschalten. Im Stil von login ruft Shell auf -> Shell führt Login-Script aus -> Ein exec /pfad/zum/programm tauscht den kompletten Shell-Prozess mit dem Programm aus.
 

midnight

OpenBSD & FreeBSD
Du kannst dir ja mal den Code von Gitea angucken: https://github.com/go-gitea/gitea

Hier koennen die User ihre eigenen ssh-keys ueber eine Weboberflaeche eintragen und dann u.a. per ssh auf ihren Code auf dem Server zugreifen.

Code:
# cat /var/gitea/.ssh/authorized_keys

# gitea public key
command="/usr/local/sbin/gitea --config=/etc/gitea/app.ini serv key-3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-ed25519 ABC...xyz user@domain
[...]
 

dettus

Bicycle User
Das mit den Keys finde ich etwas umstaendlich. Mir schwebt vor das Teil als Werbung einzusetzen. "Loggt euch ein! Login:xxx Passwort:yyy" wuerde dann idealerweise im Banner stehen.
 

turrican

Well-Known Member
Spontan wuerde ich sagen, dass ich "nur" in der /etc/passwd die Applikation als Login-Shell eintragen muss, oder mache ich mir das zu einfach?

Thomas

Du könntest auch ein "Shell Menu" anbieten - dann wäre das Kriterium von @Yamagi immer erfüllt; und aus diesem Menü gibst du dann deinen Usern die Möglichkeiten, was aufzurufen (was du vorher definiert hast).

So machens z.B. die Leuts von opnsense

https://github.com/opnsense/core/blob/master/src/sbin/opnsense-shell
 
Oben