ForumLogin eines lokalen Programms in einen Server mit ssh Authentifizierung
Willi – Freitag, 15. Januar 2021 10:08 Uhr

Hallo allerseits.
Ich habe da mal eine etwas spezielle Frage.
Ich habe ein Fortran-Programm, dass sich per ssh auf einen Server einlogged per shh mit Authentifizierung über private und public key um Files auf einen spezifizierten Account auf den Server zu kopieren. Das klappt auch ganz gut. Einzig, das dafür hinterlegte Schlüsselpaar ist an den lokalen user account gebunden, und steht somit dem User auch zur Verfügung. Das ist in diesem Fall nicht gewollt. Eigentlich soll nur das Programm in der Lage sein sich auf dem Server einzuloggen, nicht aber der User (bzw. die User, da das Programm von mehreren Usern benutzt wird).
Ist das mit ssh möglich? Und wenn ja, wie muss ich das konfigurieren, bzw. wie muss ich die Schlüssel bereitstellen?
Hab dazu nirgendwo was gefunden im Netz

2 Antworten
Daniel – Donnerstag, 21. Januar 2021 13:19 Uhr

Jörg – Montag, 01. Februar 2021 18:32 Uhr

Hallo Willi,
wie wäre es mit dieser Methode:
1)
Einen neuen User anlegen, der als Logon-Shell das auszuführende Programm bekommt.
Als Homeverzeichnis habe ich /dev/null verwendet.
Der Benutzer sieht also so aus:
# getent passwd testuser
testuser:x:1001:1001::/dev/null:/var/tmp/testprog.sh
Das Programm legt eine Textdatei unter /var/tmp an, um die Funktionalität zu testen.
# cat /var/tmp/testprog.sh
#!/bin/sh
echo “Test” >/var/tmp/test.txt
exit 0

Das Programm muss natürlich Ausführungsrechte haben, sonst kann es ja beim Einloggen nicht aufgerufen werden.
Ein kurzer Test, ob die Textdatei schon vorhanden ist:
# ls -l /var/tmp/test.txt
ls: cannot access /var/tmp/test.txt: No such file or directory
Nun loggen wir uns auf der Maschine als dieser Benutzer ein:
# ssh testuser@192.168.56.199
testuser@192.168.56.199’s password:
Last login: Mon Feb 1 13:26:59 2021 from remote
Could not chdir to home directory /dev/null: Not a directory
Connection to 192.168.56.199 closed.
Nun wird auf dem System nochmals geprüft, ob die Datei vorhanden ist:
# ls -l /var/tmp/test.txt
-rw-r–r– 1 testuser testuser 5 Feb 1 13:32 /var/tmp/test.txt
Es müssen in dem auszuführenden Programm natürlich alle Möglichkeiten unterbunden werden, es abzubrechen und sich
somit doch noch auf dem System bewegen zu können (siehe das Kommando “trap”).
Viele Grüße