Также можно явно передавать переменные среды через ssh. Это требует некоторой настройки на стороне сервера, так что это не универсальный ответ.
В моем случае я хотел передать ключ шифрования репозитория резервных копий команде на сервере хранилища резервных копий, не храня этот ключ там, но обратите внимание, что любая переменная среды видна в ps! Решение передачи ключа по стандартному вводу тоже подойдет, но мне оно показалось слишком громоздким. В любом случае, вот как передать переменную окружения через ssh:
На сервере отредактируйте sshd_configфайл, как правило, /etc/ssh/sshd_configи добавьте AcceptEnvдирективу, соответствующую переменным, которые вы хотите передать. Смотрите man sshd_config. В моем случае я хочу передать переменные в резервную копию borg, поэтому я выбрал:
AcceptEnv BORG_*
Теперь на клиенте используйте -o SendEnvвозможность отправки переменных среды. Следующая командная строка устанавливает переменную среды, BORG_SECRETа затем помечает ее для отправки на клиентский компьютер (вызываемый backup). Затем он запускается printenvтам и фильтрует вывод для переменных BORG:
$ BORG_SECRET=magic-happens ssh -o SendEnv=BORG_SECRET backup printenv | egrep BORG
BORG_SECRET=magic-happens