.ssh / environment: Soll die variable Erweiterung (PATH =…: $ PATH) funktionieren oder nicht?

Nov 04 2020

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:

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

1 muru Nov 05 2020 at 04:58

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ügt VARNAME=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.