Также можно явно передавать переменные среды через 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