Pertanyaan Bisakah saya meneruskan variabel env melalui ssh?


Saya bekerja dengan beberapa server yang berbeda, dan akan berguna untuk dapat mengatur beberapa variabel lingkungan sehingga mereka aktif pada semua dari mereka ketika saya SSH masuk. Masalahnya adalah, isi dari beberapa variabel mengandung informasi sensitif (hashed kata sandi), jadi saya tidak ingin membiarkannya tergeletak di file .bashrc - Saya ingin menyimpannya hanya di memori.

Saya tahu bahwa Anda dapat menggunakan SSH untuk meneruskan variabel DISPLAY (melalui ForwardX11) atau proses Agen SSH (melalui ForwardAgent), jadi saya bertanya-tanya apakah ada cara untuk meneruskan konten variabel lingkungan secara otomatis di seluruh koneksi SSH. Idealnya, sesuatu yang bisa saya atur dalam file .ssh / config sehingga akan berjalan secara otomatis ketika saya membutuhkannya. Ada ide?


32
2017-12-10 14:46


asal


Jawaban:


Anda bisa, tetapi itu perlu mengubah konfigurasi server.

Baca entri untuk AcceptEnv di sshd_config (5) dan SendEnv di ssh_config (5).

memperbarui:

Anda juga dapat meneruskannya pada baris perintah:

ssh foo@host "FOO=foo BAR=bar doz"

Mengenai keamanan, catatan dari siapa pun yang memiliki akses ke mesin jarak jauh akan dapat melihat variabel lingkungan yang diteruskan ke semua proses yang sedang berjalan.

Jika Anda ingin menjaga kerahasiaan informasi itu, lebih baik untuk melewatinya stdin:

cat secret_info | ssh foo@host remote_program

23
2017-12-10 15:04



Anda tidak dapat melakukannya secara otomatis (kecuali untuk $DISPLAY yang dapat Anda teruskan -X bersama dengan info Xauth Anda sehingga program jauh dapat benar-benar terhubung ke tampilan Anda) tetapi Anda dapat menggunakan skrip dengan "di sini dokumen":

ssh ... <<EOF
export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH"
runRemoteCommand
EOF

Variabel unescaped akan diperluas secara lokal dan hasilnya ditransmisikan ke sisi remote. Sehingga PATH akan diatur dengan nilai jarak jauh $HOME.


11
2017-12-10 14:52