Autor Tópico: SSH passa váriaveis globais  (Lida 2029 vezes)

Offline ragazzid

  • Usuário Ubuntu
  • *
  • Mensagens: 34
    • Ver perfil
    • RagazziD
SSH passa váriaveis globais
« Online: 01 de Julho de 2014, 23:27 »
Olá pessoal, tudo bom?

Quando me conecto via SSH a um servidor US eu acabo herdando minhas variáveis locais, segue um exemplo abaixo:
Código: [Selecionar]
bruce@batman:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=

Quando vou para o servidor:
Código: [Selecionar]
ssh servidor -l diego
diego@servidor:/home/diego> locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=

Porém se eu fizer o seguinte:
Código: [Selecionar]
diego@servidor:/home/diego> sudo su
[sudo] password for diego:
root@servidor:/home/diego> sudo su - diego
diego@servidor>/home/diego> locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Ele pega as variáveis certas de ambiente.

Existe algum parâmetro que eu passo para o ssh na hora de me conectar para evitar que ele herde as variáveis da máquina local quando se conectar?


Atualmente estou usando a seguinte versão do ubuntu e do ssh:
ssh:
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f 6 Jan 2014

Ubuntu:
Ubuntu 14.04 LTS / Linux batman 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
--- RagazziD ---

Offline ragazzid

  • Usuário Ubuntu
  • *
  • Mensagens: 34
    • Ver perfil
    • RagazziD
Re: SSH passa váriaveis globais
« Resposta #1 Online: 01 de Julho de 2014, 23:31 »
Falando do problema, achei a seguinte solução:
dentro do arquivo:
Código: [Selecionar]
/etc/ssh/ssh_config

bem no final tem a seguinte linha:
Código: [Selecionar]
SendEnv LANG LC_*
Comentei ela e consegui me logar sem mandar minhas variáveis globais, porém se souber do parâmetro para evitar isso, sem alterar a config, eu agradeço!

--- RagazziD ---

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: SSH passa váriaveis globais
« Resposta #2 Online: 02 de Julho de 2014, 19:35 »
Não, o parâmetro é esse mesmo. Alternativamente, você pode alterar o servidor pra não aceitar o recebimento de variáveis de ambiente, no arquivo /etc/sshd_config, com o parâmetro "AcceptEnv".

Se vc preferir, pode criar o arquivo .ssh/config no seu diretório HOME e colocar lá as configurações que vc quiser. Assim, elas vão valer apenas para seu usuário.

Outra forma de fazer é restringir a configuração apenas ao seu servidor; assim, vc pode adicionar uma linha "Host <nome ou endereço do seu servidor>" e depois uma linha "SendEnv" vazia ao seu arquivo ".ssh/config". Assim, vc vai fazer uma definição só pra esse servidor. O mesmo pode ser feito no /etc/ssh/ssh_config, mas vai valer pra todos.

Por fim, vc pode fazer a mesma configuração na linha de comando, na chamada do ssh, com o parâmetro "-o". Tipo, em vez de fazer

ssh diego@servidor

vc vai fazer

ssh -o SendEnv= diego@servidor

Claro, nesse caso vai precisar de um pouco de tentativa-e-erro até achar a forma correta de passar esse parâmetro na linha de comando.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D