.titleBar { margin-bottom: 5px!important; }

dropbear: Env-Variable von lokalem Rechner wird übertragen

Dieses Thema im Forum "Freetz" wurde erstellt von maceis, 2 Jan. 2012.

  1. maceis

    maceis Mitglied

    Registriert seit:
    9 Apr. 2006
    Beiträge:
    623
    Zustimmungen:
    1
    Punkte für Erfolge:
    18
    Hallo zusammen,

    wenn ich mich mit meine ssh Client (OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011) auf die Fritzbox verbinde, wird auf der Box immer der Variable $TERM der Wert aus der lokalen Umgebung zugewiesen.

    Das ist unverständlich, weil
    1. mein Client standardmäßig keine Env-Variablen sendet
    2. dropbear keine Env-Variablen aus der lokalen Shell akzeptiert
    und
    3. mit ssh -vvv klar ersichtlich ist, dass der Client definitiv nicht versucht, die Variable zu senden:
    Code:
    debug3: Ignored env TERM
    Weiß jemand woran das liegt und wie ich es verhindern kann?

    Klar, ich könnte $TERM in der profile wieder berschreiben, aber das ist wohl eher ein hack als eine saubere Lösung.

    Danke im Voraus und Gruß
    maeis
     
  2. kriegaex

    kriegaex Aktives Mitglied

    Registriert seit:
    7 Nov. 2006
    Beiträge:
    2,927
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Projektmanagement-Coach (Certified Scrum Professio
    Ort:
    Großraum Nürnberg
    #2 kriegaex, 4 Jan. 2012
    Zuletzt bearbeitet: 4 Jan. 2012
    TERM wird immer übertragen, wie es aussieht. Das hat nichts mit der Fritz!Box zu tun. Egal, ob ich mich von Ubuntu auf FB, FB auf Ubuntu, Ubuntu auf Ubuntu verbinde, die Variable wird trotz der Debug-Zeile "Ignored env TERM" immer übertragen. Das macht doch auch Sinn irgendwie, denn Du sitzt ja immer noch am selben Terminal wie zuvor und nutzt dessen Fähigkeiten.

    In Freetz wird TERM normalerweise in /etc/profile auf den Wert "xterm" gesetzt, falls die Variable leer ist. Also sorg einfach dafür, daß dem so ist, falls es das ist, was Du möchtest:
    Code:
    TERM="" ssh fritz.box -l root
    Oder setze die Variable auf der Box in ~/.profile, je nachdem, was Dir lieber ist.

    Edit: Der OpenSSH-Quelltext zeigt, daß die Debug-Zeile für jeder Variable aus dem lokalen Environment ausgegeben wird, die nicht explizit in der OpenSSH-Option SendEnv genannt wird. Das könnte man als kleinen Bug im Logging-Code bezeichnen. Es ändert aber nichts daran, daß TERM gesendet wird, Logging oder nicht.

    Übrigens würde Dropbear als SSH-Client TERM auf den Wert "vt100" setzen, falls die Variable im Environment undefiniert wäre (einfach mal mit unset TERM probieren). Das nur nebenbei, habe ich auch im Quellcode gesehen.
     
  3. maceis

    maceis Mitglied

    Registriert seit:
    9 Apr. 2006
    Beiträge:
    623
    Zustimmungen:
    1
    Punkte für Erfolge:
    18
    Hallo kriegaex,

    Danke für Deine Informationen.

    Anscheinend wird TERM tatsächlich "immer" übertragen.

    Merkwürdig finde ich dabei, dass dropbear das überhaupt übernimmt, da Env-Variablen, die mit "SendEnv" übertragen werden sollen, eben nicht übernommen werden.
    dropbear scheint das also generell nicht zu unterstützen oder ist entsprechend kompiliert bzw. konfiguriert.

    Sinn mach die Übertragung von TERM indes m. E. nicht in jedem Fall.
    Es führt nämlich dazu, dass der TERM einen Wert enthält, der von der Shell auf dem entfernten System (hier die FritzBox) nicht unterstützt wird.

    In meinem Fall führt es insbesondere dazu, dass in der bash "ctrl-l" nicht zum clear-screen führt (Falls Du Dich erinnerst, hatten wir vor Jahren mal einen Thread zu diesem Thema).
    Das liegt daran, dass ich lokal xterm-256color verwende.
    Vermutlich sollte man bei ssh, telnet etc. generell darauf achten, dass beide Rechner den selben Terminal type verwenden.


    Nur der Vollständigkeit halber:
    Der OpenSSH-Client versucht bei mir LANG zu senden, obwohl ich SendEnv nicht verwendet hatte.
    Laut manpages sollte das auch nicht sein.

    Im Grunde ist das alles kein wirkliches Problem, da man ja TERM leicht auf den gewünschten Wert setzen kann.
    Ich bin über das "clear-screen"-Problem in der bash auf das Thema gestoßen und versuche, die Zusammenhänge zu verstehen.
     
  4. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Zumindest bei Freetz (und wir sind hier bei Freetz) kannst Du bei der Erstellung auswählen, welche Terminal-Beschreibungen auf der Box installiert werden sollen. Da man normalerweise nur eine überschaubare Anzahl von Terminal-Einträgen verwendet, sollte das kein Problem sein.
    Generell ist es sinnvoll, TERM zu übertragen, denn das Terminal verändert sich ja nicht. Auf einem normalen Server sollten auch alle Terminals vorhanden sein, so dass das kein Problem ist. Auch bei Freetz kann man die benötigten Terminals installieren, alternativ kann man in /etc/profile oder ~/.profile etwas eintragen, das ungültige Terminal Einträge in vorhandene Einträge umsetzt.

    Der Dropbear Server unterstützt keine konfigurierbare Liste von Environment Variablen, aber TERM gehört zu den Werten, die gesetzt werden, wenn sie vom Client übergeben werden. Siehe svr-chansession.c:execchild.

    So wie es aussieht, ist die Dokumentation des OpenSSH Clients unvollständig, dort steht im Abschnitt ENVIRONMENT nicht von TERM oder LANG.
     
  5. doc456

    doc456 IPPF-Urgestein

    Registriert seit:
    27 Apr. 2006
    Beiträge:
    15,682
    Zustimmungen:
    2
    Punkte für Erfolge:
    38
    [OT] Willkommen im Club und bleib uns so erhalten, wie du bist! :bier: [/OT]