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?


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

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

AcceptEnv FOO

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.


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'

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.