Mengatur variabel untuk host SSH yang diberikan

17

Di ssh_config, seseorang dapat memilih untuk mengekspor beberapa variabel lingkungan ke host menggunakan SendEnv.

Apakah ada juga cara untuk memaksa nilai yang diberikan untuk variabel ini, per host? Misalnya, apakah mungkin untuk mengekspor variabel $FOOdengan nilai barhanya saat menghubungkan ke host example.com?

ℝaphink
sumber

Jawaban:

15

Anda tidak dapat memberikan nilai spesifik untuk variabel lingkungan ssh_config, tetapi Anda tentu dapat mengirim variabel lingkungan yang ada hanya ke host tertentu.

Host example.com
    SendEnv FOO

Untuk menyelesaikan rantai:

FOO=bar ssh [email protected]

Akhirnya, server jauh harus memiliki variabel lingkungan yang terdaftar AcceptEnvdi dalamnya sshd_config.

AcceptEnv FOO
Michael Hampton
sumber
APA tepatnya yang ingin Anda hindari?
Michael Hampton
1
Harus menulis alias untuk mengirim variabel dengan nilai yang diberikan.
ℝaphink
Maaf, tidak banyak lagi yang dapat Anda lakukan ... kecuali Anda dapat membuat komputer membaca pikiran Anda. :)
Michael Hampton
6
Terima kasih untuk mengkonfirmasikan kecurigaan saya meskipun ;-) Apa yang saya akan menyukai akan menjadi sesuatu seperti SetVar FOO='bar'di ssh_config;)
ℝaphink
2
Kasus berulang bagi saya adalah bahwa sistem lama tidak mendukung TERM=tmux-256colorjadi saya ingin mundur per host jarak jauh (dengan wildcard).
Jed
4

Anda dapat memberikan nilai tertentu dengan menggunakan SetEnvdi Anda ~/.ssh/config, misalnya

Host *
  SetEnv FOO=bar

Sesuai man ssh_config:

Tentukan satu atau beberapa variabel lingkungan secara langsung dan kontennya untuk dikirim ke server. Demikian pula dengan SendEnv, server harus siap menerima variabel lingkungan.

Dengan asumsi server Anda mendapat baris berikut di /etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

Periksa juga: man ssh_configdan man sshd_config.

kenorb
sumber
2
Catatan untuk pembaca yang bingung (seperti saya sendiri, ketika saya pertama kali membaca ini): Ini baru sejak OpenSSH 7.8, dirilis pada Agustus 2018, dan akan membutuhkan waktu cukup lama untuk tersedia bagi pengguna rata-rata melalui pembaruan OS. (Tapi begitu itu menjadi umum, itu akan menjadi solusi terbaik untuk masalah ini)
Irfy
1

Gagasan lain adalah mengatur variabel lingkungan dalam perintah ssh dan menjalankan shell interaktif, misalnya. Saya mencoba untuk memanggil shell interaktif dengan env-var 'MANWIDTH':

ssh example.com 'MANWIDTH=120 bash -li'
huh
sumber
0

Anda dapat mengatur nilai konfigurasi per host menggunakan file .ssh / config. Sebagai contoh:

Host example.com
SendEnv FOO

Perhatikan bahwa server juga harus mendukungnya.

pengguna156525
sumber