Também é possível passar variáveis de ambiente explicitamente por meio de ssh. Requer alguma configuração do lado do servidor, portanto, esta não é uma resposta universal.
No meu caso, eu queria passar uma chave de criptografia do repositório de backup para um comando no servidor de armazenamento de backup sem ter essa chave armazenada lá, mas observe que qualquer variável de ambiente é visível em ps
! A solução de passar a chave para stdin também funcionaria, mas eu a achei muito complicada. Em qualquer caso, veja como passar uma variável de ambiente por meio de ssh:
No servidor, edite o sshd_config
arquivo, normalmente /etc/ssh/sshd_config
e adicione uma AcceptEnv
diretiva que corresponda às variáveis que você deseja passar. Veja man sshd_config
. No meu caso, quero passar variáveis para o backup do borg, então escolhi:
AcceptEnv BORG_*
Agora, no cliente, use a -o SendEnv
opção de enviar variáveis de ambiente. A linha de comando a seguir define a variável de ambiente BORG_SECRET
e a sinaliza para ser enviada à máquina cliente (chamada backup
). Em seguida, ele executa printenv
lá e filtra a saída para variáveis BORG:
$ BORG_SECRET=magic-happens ssh -o SendEnv=BORG_SECRET backup printenv | egrep BORG
BORG_SECRET=magic-happens