Ich habe eine /etc/issue-Datei, die einige ANSI-Farbcodes auf einem Linux-Entwicklungsboard enthält. Wenn ich mich über ein serielles Terminal verbinde, wird alles einwandfrei angezeigt. Wenn ich mich jedoch über SSH verbinde, wird das ESC-Zeichen durch „\033“ ersetzt und von der Empfangsseite nicht erkannt, wodurch der ANSI-Code nicht wirksam wird. Wie kann ich das beheben?
Antwort1
Wie kann ich das beheben?
Das müssen Sie nicht. Die meisten SSH-Clients (vor allem OpenSSH) verhindern absichtlich die Ausgabe von ANSI-Codes im Pre-Login-Banner, damit ein nicht vertrauenswürdiger Server dem Client keine schädlichen Codes senden kann – Sie können das serverseitig nicht ändern (das ist irgendwieDer Punkt).
Vorschläge:
Bewahren Sie zwei Kopien des Banners auf, eine schicke in /etc/issue für Konsolen-/Serienanmeldungen und ein einfaches einfarbiges Banner in etwas wie /etc/ssh/issue.net für SSH (der Pfad ist konfigurierbar).
Verwenden Sie das SSH-Banner nicht mehr für Grafiken. (Ehrlich gesagt, ein großes Banner vor der Verbindung wirdnervigwenn häufig per SSH eine Verbindung zu einem Server hergestellt werden muss.) Verschieben Sie schicke Logos stattdessen in die Datei /etc/motd nach der Anmeldung.