# ssh zugang fuer user auf bestimmte befehle beschraenken

## pieter_parker

habe eine vmware maschiene, dort soll sich vom internet ein user einloggen koennen und nur von mir erstellte .sh dateien ausfuehren koennen

1.sh .. startet screen mit einem programm

2.sh .. connectet zu dem screen

3.sh .. cat .. logfile vom programm

ist soetwas moeglich ? wenn, wie ?

----------

## misterjack

mit Chroot, in der du nur die befehle bereitstellst und mehr nicht.

----------

## pieter_parker

chroot bedeutet ich kopiere das ?system in ein verzeichnis und in das kann ich dann per chroot mich rein..ein..loggen? und dort stelle ich aus das der user keine befehle hat ? ausser die von mir genannten .sh dateien ? warum dazu den umstaendlichen weg mit dem chroot ? aber ich glaub das mit dem chroot wird nicht funktionieren .. die ssh verbindung von der er kommt kommt garnicht erst ins chroot rein sondern landet ein system davor

----------

## misterjack

Für einen Chroot brauchst du kein komplettes System, es reichen deine Scripts + davon abhängige Programme und von denen benötigte Bibliotheken. Und per SSH direkt in den Chroot ist kein Problem.

Wie das geht, findest du hier.

----------

## schmutzfinger

Die Skripte an dedizierte Client-Schlüssel hängen und die dann mit "command" in authorized_keys (man ssh) eintragen. Wenn ein Client mit dem jeweiligen key kommt dann kann er nur genau das eine Skript und bekommt keine Shell.

----------

## pieter_parker

wie geht das ganze ohne chroot umgebung ?

wie kann ich einem user alle bis auf die von mir fesgelegten befehle nehmen ?

----------

## gimpel

 *pieter_parker wrote:*   

> wie geht das ganze ohne chroot umgebung ?
> 
> wie kann ich einem user alle bis auf die von mir fesgelegten befehle nehmen ?

 

So:

 *schmutzfinger wrote:*   

> Die Skripte an dedizierte Client-Schlüssel hängen und die dann mit "command" in authorized_keys (man ssh) eintragen. Wenn ein Client mit dem jeweiligen key kommt dann kann er nur genau das eine Skript und bekommt keine Shell.

 

was dann beispielsweise so aussieht in authorized_keys:

```
command="/usr/bin/backup" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvna.....
```

Siehe dazu man sshd -> AUTHORIZED_KEYS FILE FORMAT, da steht dann auch, dass der originale Befehl in der Variable SSH_ORIGINAL_COMMAND abgelegt wird.. damit lässt sich dann hübsch ein script basteln, ala

```
#!/bin/sh

case $SSH_ORIGINAL_COMMAND in

        moo) echo $SSH_ORIGINAL_COMMAND wird erlaubt;;

        foo) echo "OK, auch erlaubt...";;

        *) echo "So nicht mein lieber. Erlaubte Befehle: ssh user@host <moo|foo>";;

esac
```

----------

## Fauli

Siehe auch: Per-Account Server Configuration

----------

