Możliwe jest również jawne przekazywanie zmiennych środowiskowych przez ssh. Wymaga konfiguracji po stronie serwera, więc nie jest to uniwersalna odpowiedź.
W moim przypadku chciałem przekazać klucz szyfrowania repozytorium kopii zapasowych do polecenia na serwerze kopii zapasowych bez przechowywania tego klucza, ale zwróć uwagę, że każda zmienna środowiskowa jest widoczna w ps! Rozwiązanie polegające na przekazaniu klucza na stdin również działałoby, ale uznałem je za zbyt kłopotliwe. W każdym razie, oto jak przekazać zmienną środowiskową przez ssh:
Na serwerze przeprowadź edycję sshd_configpliku, zazwyczaj /etc/ssh/sshd_configi dodaj AcceptEnvdyrektywę pasującą do zmiennych, które chcesz przekazać. Zobacz man sshd_config. W moim przypadku chcę przekazać zmienne do kopii zapasowej Borg, więc wybrałem:
AcceptEnv BORG_*
Teraz na kliencie użyj -o SendEnvopcji wysyłania zmiennych środowiskowych. Poniższy wiersz polecenia ustawia zmienną środowiskową, BORG_SECRETa następnie flaguje ją do wysłania do komputera klienckiego (wywoływane backup). Następnie działa printenvtam i filtruje dane wyjściowe pod kątem zmiennych BORG:
$ BORG_SECRET=magic-happens ssh -o SendEnv=BORG_SECRET backup printenv | egrep BORG
BORG_SECRET=magic-happens