como desabilitar variáveis SendEnv definidas em ssh_config de ~ / .ssh / config

28

Eu não encontrei isso em lugar nenhum, por isso estou imaginando se sou o único a atingir esse problema.

Por padrão, ssh na Red Hat e Debian, pelo menos, tem um ssh_config com a opção SendEnv passando variáveis LC * e LANG na sessão remota. Se alguém não é root para alterar o / etc / ssh / ssh_config, como ele pode desabilitar esse comportamento? A opção SendEnv parece estar se acumulando e não consigo ver uma maneira de redefini-la.

E, para não ser perguntado, eu preciso evitar passar meu código de idioma para testar máquinas, para evitar efeitos colaterais em scripts e programas que dependem de localidade como o padrão para a máquina.

    
por akostadinov 09.10.2012 / 20:47

5 respostas

18

Você é o não o único . Conforme documentado em ssh_config(5) , você não pode desmarcar SendEnv , porque

Multiple environment variables may be [...] spread across multiple SendEnv directives.

Se você tem raiz nas máquinas de teste, pode alterar AcceptEnv para não aceitar variáveis enviadas pelo cliente.

    
por 10.10.2012 / 01:03
5

Isso não pode ser feito em ~/.ssh/config porque SendEnv não pode ser substituído.

O uso de aliases não funcionará para scripts que chamam ssh.

Uma alternativa é exportar uma função. Por exemplo. em ~/.bashrc :

function ssh() {
    LANG="en_US.UTF-8" \
    LC_ADDRESS="$LANG" \
    LC_IDENTIFICATION="$LANG" \
    LC_MEASUREMENT="$LANG" \
    LC_MONETARY="$LANG" \
    LC_NAME="$LANG" \
    LC_NUMERIC="$LANG" \
    LC_PAPER="$LANG" \
    LC_TELEPHONE="$LANG" \
    LC_TIME="$LANG" \
    LC_ALL="$LANG" \
    /usr/bin/ssh $@
}
export -f ssh
    
por 27.08.2015 / 17:31
0

Se você estiver usando o bash você pode configurar um alias ssh = 'LANG = comando ssh' para desabilitar o LANG passando para os outros servidores.

    
por 15.04.2015 / 09:11
0

Você pode usar su - youruser quando estiver logado em ssh. Isso reinicializará o ambiente para o usuário.

Na verdade, você inicializa uma nova sessão com um novo ambiente.

    
por 15.04.2015 / 09:43
0

De acordo com man ssh :

 -F configfile
         Specifies an alternative per-user configuration file.  If a con-
         figuration file is given on the command line, the system-wide
         configuration file (/etc/ssh/ssh_config) will be ignored.  The
         default for the per-user configuration file is ~/.ssh/config.

Assim, você pode ssh sem concordar com /etc/ssh/ssh_config especificando explicitamente o arquivo de configuração (padrão) na linha de comando ( ~/.ssh/config está OK para estar vazio):

$ touch ~/.ssh/config
$ ssh -F ~/.ssh/config your_user@your_host

Você pode criar um alias para ele em ~/.bashrc :

alias ssh="ssh -F ~/.ssh/config"

Reinicie o bash shell, então você pode simplesmente ssh assim:

$ ssh your_user@your_host
    
por 22.01.2017 / 03:29