Configurando uma variável para um determinado host SSH


17

Em ssh_config, pode-se optar por exportar algumas variáveis ​​de ambiente para o host usando SendEnv.

Existe também uma maneira de forçar um determinado valor para essa variável, por host? Por exemplo, seria possível exportar variável $FOOcom valor barsomente ao conectar ao host example.com?


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 user@example.com

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

AcceptEnv FOO

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.


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'

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.