.ssh / environment: Soll die variable Erweiterung (PATH =…: $ PATH) funktionieren oder nicht?
Ich habe gerade ~/.ssh/environmentdie PermitUserEnvironmentEinstellung in OpenSSH Server entdeckt. Es eignet sich hervorragend zum Setzen von Variablen auf Literalzeichenfolgen. z.B:
# host ~/.ssh/environment
PATH=/home/rlue/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
# client
$ ssh host 'echo $PATH'
/home/rlue/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
Die variable Erweiterung funktioniert jedoch nicht:
# host ~/.ssh/environment
PATH=/home/rlue/.local/bin:$PATH
# client
$ ssh host 'echo $PATH'
/home/rlue/.local/bin:$PATH
Ich habe mehrere Fragen gefunden , die dieses Thema behandeln, mit unterschiedlichen Antworten darüber , ob variable Erweiterung sollte funktionieren oder nicht:
- "Ich habe es herausgefunden, es hat sich nicht erweitert, weil ich eine Zeile
PATH="$PATH:/new/path"zu meiner hinzugefügt habe,~/.ssh/environmentals es hätte sein sollen.PATH=$PATH:/new/path" - "Sie haben doppelte Anführungszeichen, variable Erweiterung und eine Alias-Definition. Nichts davon wird funktionieren."
- "
~/.ssh/environmentwird gelesen, bevor eine Shell oder einsshBefehl erzeugt wird, sodass (zum Beispiel) weder export noch $ PATH sinnvoll sind." - "Beweis, dass [es] funktioniert"
Der Autor dieses letzten Beitrags sagte, er habe bestätigt, dass er mit derselben Version des OpenSSH-Servers funktioniert, die ich verwende (1: 7.9p1-10 + deb10u2 auf Debian Stable), aber ich habe seine Anweisungen zum Brief befolgt und ich ' Ich bekomme immer noch ein Literal $PATH( dh keine variable Erweiterung).
Hat jemand eine definitive Antwort Re haben: ob es sollte an der Arbeit, und wenn ja, was meine Konfiguration fehlt?
Antworten
Beim Überprüfen des Quellcodes sind die relevanten Funktionen read_environment_file()insession.c und child_set_env()inmisc.c . Dies sind einfache Funktionen - lesen Sie einfach die Zeilen des Formulars var=valueund legen Sie sie fest, überprüfen Sie die Grenzen und die Gültigkeit, ohne die Werte zusätzlich zu verarbeiten. Das sagt auch die Manpage :
Außerdem liest ssh
~/.ssh/environmentund fügtVARNAME=valueder Umgebung Zeilen im Format " " hinzu, wenn die Datei vorhanden ist und Benutzer ihre Umgebung ändern dürfen.
Also, nein, es soll nicht nach Dokumentation oder Code gehen.