Manchmal möchte man bei einem SSH-Server ein für bestimmte Benutzer ein festes Kommando hinterlegen
via “authorized_keys” und “command=xyz”. Wenn sich die Benutzer dann am SSH-Server anmelden, wird
immer das Kommando xyz ausgeführt, also:
Benutzer: ssh ich@server –> xyz wird auf “server” ausgeführt
Nun kann man dem SSH-Kommando noch Argumente dranhängen und diese werden via SSH_ORIGINAL_COMMAND
an xyz übergeben. Dadurch kann dann das Verhalten von xyz gesteuert werden.
Problem: “Gruppierung” von Argumenten in SSH_ORIGINAL_COMMAND geht leicht verloren. Wenn man also
ssh ich@server start "Uli Heller" now
aufruft, so erhält man bei naiver Auswertung von SSH_ORIGINAL_COMMAND diese Parameter
P1: start
P2: Uli
P3: Heller
P4: now
Wnsch wäre dies:
P1: start
P2: Uli Heller
P3: now
SSH-Setup
Ich verwende als Server den Rechner “uli-sshtest”
und trage dort beim Benutzer “ubuntu” ies ein:
1
command="./my-command.sh" ssh-rsa AAAAB3Nza...p6Q+VFQ/eAnpCZDoITmw== TestKey von Uli
Erster Test – my-command.sh fehlt
1234567
uli:~$ ssh ubuntu@uli-sshtest
The authenticity of host 'uli-sshtest.lxd (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:1/HEqekk7wU+wFyHPyR4CwVIrAGanTyYXDU051t2J6Q.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'uli-sshtest.lxd' (ECDSA) to the list of known hosts.
bash: ./my-command.sh: No such file or directory
Connection to uli-sshtest closed.
Zweiter Test – Grundvariante von my-command.sh
Nun teste ich mit dieser Grundversion von “my-command.sh”: