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_config
pliku, zazwyczaj /etc/ssh/sshd_config
i dodaj AcceptEnv
dyrektywę 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 SendEnv
opcji wysyłania zmiennych środowiskowych. Poniższy wiersz polecenia ustawia zmienną środowiskową, BORG_SECRET
a następnie flaguje ją do wysłania do komputera klienckiego (wywoływane backup
). Następnie działa printenv
tam 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