Saya tidak dapat menemukan itu di mana pun sehingga saya bertanya-tanya apakah saya satu-satunya yang memukul masalah tersebut.
Secara default ssh pada Red Hat dan Debian setidaknya memiliki ssh_config dengan opsi SendEnv yang meneruskan variabel LC * dan LANG di sesi jarak jauh. Jika seseorang tidak melakukan root untuk mengubah /etc/ssh/ssh_config, bagaimana dia bisa menonaktifkan perilaku itu? Opsi SendEnv tampaknya terakumulasi dan saya tidak dapat melihat cara untuk meresetnya.
Dan untuk menghindari diminta, saya harus menghindari melewati lokal saya ke mesin uji untuk menghindari efek samping pada skrip dan program yang mengandalkan lokal menjadi default untuk mesin.
ssh
debian
redhat-enterprise-linux
openssh
akostadinov
sumber
sumber
env
atau dengan skrip wrapper?Jawaban:
Anda bukan satu-satunya . Seperti yang didokumentasikan di
ssh_config(5)
Anda tidak dapat menghapusSendEnv
, karenaJika Anda memiliki root pada mesin uji Anda bisa berubah
AcceptEnv
untuk tidak menerima variabel yang dikirim oleh klien.sumber
Ini tidak dapat dilakukan
~/.ssh/config
karenaSendEnv
tidak dapat ditimpa.Menggunakan alias tidak akan berfungsi untuk skrip yang memanggil ssh.
Salah satu alternatif adalah mengekspor fungsi. Misal dalam
~/.bashrc
:sumber
Ada opsi
SetEnv
, seseorang dapat memaksaLANG
ke beberapa nilai tertentu sebelum mengirimnya.Juga halaman manual mengatakan itu
tetapi saya tidak berhasil membuat ini bekerja.
sumber
-
pendekatan itu tidak berhasil. Saran yang baik untuk hardcode remote LANG dan vars lainnya di konfigurasi ssh. Membuat segalanya lebih mudah diprediksi. MungkinSetEnv
arahan yang lebih baru karena tidak ada orang lain yang menyarankannya.SetEnv LANG=en_US.UTF-8
Jika Anda menggunakan bash, Anda dapat mengatur alias ssh = 'LANG = perintah ssh' untuk menonaktifkan LANG yang lewat ke server lain.
sumber
Anda dapat menggunakan
su - youruser
saat Anda login lebih dari ssh. Ini akan menginisialisasi ulang lingkungan untuk pengguna.Sebenarnya Anda menginisialisasi sesi baru dengan lingkungan baru.
sumber
Menurut
man ssh
:Jadi, Anda dapat ssh tanpa mematuhinya dengan
/etc/ssh/ssh_config
secara eksplisit menentukan file konfigurasi (default) pada baris perintah (~/.ssh/config
boleh-boleh saja kosong):Anda dapat membuat alias untuk itu di
~/.bashrc
:Mulai ulang bash shell, maka Anda cukup ssh seperti ini:
sumber
if one supplies on command line -F, then the system wide config is ignored according to man page
dari bugzilla.mindrot.org/show_bug.cgi?id=1285 ; itu adalah opsi tetapi tidak benar-benar fitur yang diinginkan.