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 user@example.com

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

AcceptEnv FOO

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.


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'

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.