Impostazione locale non rioutput: forzare determinate impostazioni locali quando si connette tramite ssh

Per anni ho avuto un problema con la "Impostazione di locali non rioutput". Ora ho capito il problema. Nella mia macchina locale, il mio LC_TIME è impostato su un file personalizzato ("custom.UTF-8"). Questo file personalizzato non esiste in nessuna macchina remota a cui si connette. Tuttavia, tramite SSH la mia impostazione locale viene esportta e ricercata presso la macchina remota. Quindi è per questo che continuo a get:

perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_TIME = "custom.UTF-8", LANG = "en_US.UTF-8" 

Quello che voglio configurare è che il locale LC_TIME (o qualsiasi variabile locale) non sia mai esportto. Sto bene utilizzando il valore definito sulla macchina remota. Come devo definire questo?

  • Forza connessione SSH tramite un'altra interface
  • Running git tirare da uno script php
  • Come fare per aggiornare OpenSSH in remoto tramite la row di command ssh?
  • Come get il pieno controllo di umask / PAM / permessi?
  • SSH Richiede la password anche se sono disponibili chiavi private, presentate al server e conosciute
  • Differenti "RequiredAuthentications2" per il sottosistema sshd e sftp
  • Linux locale: en_US.UTF-8 vs en_US
  • Selezionare locales su ubuntu 10.04 dopo l'installazione
  • CentOS 6 e errore locale
  • RSYNC da cartelle remote a locali escluse
  • Debian Squeeze impostazioni locali
  • Ulteriori lingue di visualizzazione in Windows Server 2008 R2: errore durante l'installazione
  • One Solution collect form web for “Impostazione locale non rioutput: forzare determinate impostazioni locali quando si connette tramite ssh”

    Il modo più semplice per impedire l'esportzione dell'ambiente è quello di sovrascriverli sul lato server. Creare un file .bashrc (o il file di initialization appropriato per la shell) e sovrascrivere le variables.

    esempio: file minimo .bashrc

     unset LC_TIME 

    in alternativa, impostare la variabile ad un valore valido:

     export LC_TIME=en_US.UTF-8 

    Se si desidera veramente impedire l'invio di alcune variables di ambiente, è probabile che l'accesso principale sia necessario sul client e / o sulla macchina server.

    Sul lato client è ansible modificare /etc/ssh/ssh_config e rimuovere o modificare la linea SendEnv . Oggi la maggior parte delle distribuzioni hanno impostato per submit le variables di ambiente locale ( LC_* ). Come utente puoi solo appendere a questo elenco, non sovrascrivere. È per questo che puoi distriggersre questa opzione solo quando hai accesso alla macchina alla macchina.

    In alternativa, sul lato server è ansible modificare /etc/ssh/sshd_config e rimuovere o modificare la linea AcceptEnv . Oggi la maggior parte delle distribuzioni hanno impostato per accettare le variables di ambiente locale ( LC_* ).

    Cerca le spiegazioni di SendEnv nella pagina man per ssh_config e AcceptEnv nella pagina man per sshd_config .

    Per completezza: c'è anche PermitUserEnvironment in sshd_config . Come dice il nome, consente all'utente di impostare alcuni file che inizializzano alcune variables. Se PermitUserEnvironment è abilitato puoi prendersi cura del resto come utente, ma non ho mai incontrato un sistema con PermitUserEnvironment abilitato.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.