Ich glaube nicht, dass das möglich ist.
Zuerst musste ich Ihren Befehl neu schreiben. Obwohl dies durch die Tatsache (siehe später) nichtig ist, dass das, was Sie erreichen möchten, nicht erreicht werden kann, ist die Methode dafür von Interesse und Allgemeinheit, daher werde ich darüber sprechen. Ich musste Ihren Befehl in ändern
ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=$'
Der Grund ist, dass es notwendig ist, zu verhindern, dass die lokale Shell durch $HOSTANME
ihren local
Wert ersetzt wird. Daher muss das, was wir an den Remote-Server übergeben, in einfache Anführungszeichen gesetzt werden '. Damit dies funktioniert, darf es keine einfachen Anführungszeichen innerhalb des Befehls geben. Daher musste ich ihn so umschreiben, dass im Befehl keine einfachen Anführungszeichen angezeigt werden, die remote ausgeführt werden können. Ich schaffte dies mit einem Array zu tun COLOR
. Der Befehl
COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=$
funktioniert gut vor Ort (die Wahl der Farben ist meine).
Es gibt zwei Möglichkeiten, Umgebungsvariablen über ssh zu exportieren. Erstens kann man die Variable AcceptEnv
in der Serverdatei ändern, /etc/ssh/sshd_config
aber der manuelle Status
AcceptEnv
Gibt an, welche Umgebungsvariablen durch den Client gesendet in die Sitzung kopiert werden environ .
Der Schwerpunkt liegt hier auf der Sitzung : keine globale Veränderung.
Der zweite Weg ist durch die PermitUserEnvironment
Variable:
PermitUserEnvironment
Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed by sshd. The default is "no". Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD.
Wie Sie sehen, ssh
ist es sehr vorsichtig, wenn Sie einem entfernten Benutzer nicht erlauben, globale Umgebungsvariablen zu ändern.