Configurando uma variável para um determinado host SSH

Respostas:

15

Você não pode fornecer um valor específico para uma variável de ambiente ssh_config, mas certamente pode enviar a variável de ambiente existente apenas para hosts específicos.

Host example.com
    SendEnv FOO

Para completar a cadeia:

FOO=bar ssh [email protected]

Finalmente, o servidor remoto deve ter a variável de ambiente listadas no AcceptEnvem seu sshd_config.

AcceptEnv FOO
Michael Hampton
fonte
O que é exatamente o que você gostaria de evitar?
Michael Hampton
1
Ter que escrever um alias para enviar uma variável com um determinado valor.
ℝaphink
Desculpe, não há muito mais que você possa fazer ... a menos que consiga que o computador leia sua mente. :)
Michael Hampton
6
Obrigado por confirmar as minhas suspeitas embora ;-) O que eu teria gostado teria sido algo como SetVar FOO='bar'em ssh_config;)
ℝaphink
2
O caso recorrente para mim é que os sistemas antigos não suportam, TERM=tmux-256colorentão eu gostaria de um fallback por host remoto (com caracteres curinga).
Jed
4

Você pode dar um valor específico usando SetEnvem sua ~/.ssh/config, por exemplo,

Host *
  SetEnv FOO=bar

Conforme man ssh_config:

Especifique diretamente uma ou mais variáveis ​​de ambiente e seu conteúdo a ser enviado ao servidor. Da mesma forma SendEnv, o servidor deve estar preparado para aceitar a variável de ambiente.

Supondo que seu servidor tenha a seguinte linha /etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

Verifique também: man ssh_confige man sshd_config.

kenorb
fonte
2
Nota para o leitor confuso (como eu, quando li pela primeira vez): isso é novo desde o OpenSSH 7.8, lançado em agosto de 2018, e levará um tempo para que ele fique disponível para o usuário médio por meio de atualizações do sistema operacional. (Mas uma vez que se torna comum, será de longe a melhor solução para o problema)
Irfy
1

Outra idéia é definir as variáveis ​​de ambiente no comando ssh e executar um shell interativo, por exemplo. Estou tentando invocar um shell interativo com env-var 'MANWIDTH':

ssh example.com 'MANWIDTH=120 bash -li'
huch
fonte
0

Você pode definir os valores de configuração por host usando o arquivo .ssh / config. Por exemplo:

Host example.com
SendEnv FOO

Observe que o servidor também deve suportá-lo.

user156525
fonte