Ustawienie zmiennej dla danego hosta SSH

Odpowiedzi:

16

Nie możesz podać konkretnej wartości zmiennej środowiskowej w ssh_config, ale z pewnością możesz wysłać istniejącą zmienną środowiskową tylko do określonych hostów.

Host example.com
    SendEnv FOO

Aby zakończyć łańcuch:

FOO=bar ssh [email protected]

Wreszcie, zdalny serwer musi mieć wymienioną zmienną środowiskową AcceptEnvw swoim sshd_config.

AcceptEnv FOO
Michael Hampton
źródło
Czego dokładnie chciałbyś uniknąć?
Michael Hampton
1
Konieczność napisania aliasu w celu wysłania zmiennej o podanej wartości.
ℝaphink
Niestety, niewiele więcej możesz zrobić ... chyba że możesz zmusić komputer do czytania w myślach. :)
Michael Hampton
6
Dziękuję za potwierdzenie moich podejrzeń ;-) To, co chciałbym, to coś SetVar FOO='bar'w stylu ssh_config;)
ℝaphink
2
Powtarzającym się przypadkiem jest to, że stare systemy nie obsługują, TERM=tmux-256colorwięc chciałbym skorzystać z rezerwowego hosta zdalnego (z symbolami wieloznacznymi).
Jed
4

Możesz podać konkretną wartość, używając SetEnvw swojej ~/.ssh/config, np

Host *
  SetEnv FOO=bar

Zgodnie z man ssh_config:

Określ bezpośrednio jedną lub więcej zmiennych środowiskowych i ich zawartość, która ma zostać wysłana na serwer. Podobnie jak SendEnvserwer musi być przygotowany do zaakceptowania zmiennej środowiskowej.

Zakładając, że twój serwer ma następujący wiersz /etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

Sprawdź także: man ssh_configi man sshd_config.

kenorb
źródło
2
Uwaga dla zdziwionego czytelnika (takiego jak ja, kiedy czytam to po raz pierwszy): Jest to nowość od OpenSSH 7.8, wydanego w sierpniu 2018 r., I dopiero po pewnym czasie będzie dostępny dla przeciętnego użytkownika za pośrednictwem aktualizacji systemu operacyjnego. (Ale gdy stanie się powszechne, będzie to zdecydowanie najlepsze rozwiązanie problemu)
Irfy,
1

Innym pomysłem jest ustawienie zmiennych środowiskowych w komendzie ssh i uruchomienie interaktywnej powłoki, np. Próbuję wywołać interaktywną powłokę z env-var 'MANWIDTH':

ssh example.com 'MANWIDTH=120 bash -li'
huch
źródło
0

Można ustawić wartości konfiguracji dla poszczególnych hostów za pomocą pliku .ssh / config. Na przykład:

Host example.com
SendEnv FOO

Pamiętaj, że serwer musi także go obsługiwać.

użytkownik156525
źródło