การตั้งค่าตัวแปรสำหรับโฮสต์ SSH ที่กำหนด


17

ในหนึ่งสามารถเลือกที่จะส่งออกตัวแปรสภาพแวดล้อมบางอย่างที่จะเป็นเจ้าภาพโดยใช้ssh_configSendEnv

มีวิธีบังคับค่าที่กำหนดสำหรับตัวแปรนี้ต่อโฮสต์หรือไม่ ตัวอย่างเช่นเป็นไปได้ไหมที่จะส่งออกตัวแปรที่$FOOมีค่าbarเมื่อเชื่อมต่อกับโฮสต์example.comเท่านั้น


คำตอบ:


16

คุณไม่สามารถระบุค่าเฉพาะสำหรับตัวแปรสภาพแวดล้อมssh_configได้ แต่คุณสามารถส่งตัวแปรสภาพแวดล้อมที่มีอยู่ไปยังโฮสต์ที่ระบุได้เท่านั้น

Host example.com
    SendEnv FOO

ในการทำโซ่ให้สมบูรณ์:

FOO=bar ssh user@example.com

สุดท้ายเซิร์ฟเวอร์ระยะไกลต้องมีตัวแปรสภาพแวดล้อมที่ระบุไว้ในในของมันAcceptEnvsshd_config

AcceptEnv FOO

อะไรคือสิ่งที่คุณต้องการหลีกเลี่ยง
Michael Hampton

1
ต้องเขียนนามแฝงเพื่อส่งตัวแปรที่มีค่าที่กำหนด
ℝaphink

ขออภัยไม่มากที่คุณสามารถทำได้ ... เว้นแต่คุณจะทำให้คอมพิวเตอร์อ่านใจ :)
Michael Hampton

6
ขอบคุณสำหรับการยืนยันความสงสัยของฉันแม้ว่า ;-) สิ่งที่ฉันชอบจะเป็นอะไรSetVar FOO='bar'ในssh_config)
ℝaphink

2
กรณีที่เกิดขึ้นสำหรับฉันคือระบบเก่าไม่รองรับTERM=tmux-256colorดังนั้นฉันจึงต้องการทางเลือกต่อโฮสต์ระยะไกล (พร้อม wildcard)
Jed

4

คุณสามารถให้ค่าที่เฉพาะเจาะจงโดยใช้SetEnvในของคุณ~/.ssh/configเช่น

Host *
  SetEnv FOO=bar

ตามman ssh_config:

ระบุตัวแปรสภาพแวดล้อมอย่างน้อยหนึ่งรายการและเนื้อหาที่จะส่งไปยังเซิร์ฟเวอร์โดยตรง ในทำนองเดียวกันSendEnvเซิร์ฟเวอร์จะต้องเตรียมรับตัวแปรสภาพแวดล้อม

สมมติว่าเซิร์ฟเวอร์ของคุณมีบรรทัดต่อไปนี้ใน/etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

ตรวจสอบเพิ่มเติม: และman ssh_configman sshd_config


2
หมายเหตุสำหรับผู้อ่านที่ทำให้งง (เช่นตัวฉันเมื่อฉันอ่านครั้งแรก): นี่เป็นสิ่งใหม่ตั้งแต่ OpenSSH 7.8 ซึ่งเปิดตัวในเดือนสิงหาคมปี 2018 และจะใช้เวลาสักครู่เพื่อให้ผู้ใช้ทั่วไปสามารถใช้งานได้ผ่านการอัปเดตระบบปฏิบัติการ (แต่เมื่อมันกลายเป็นเรื่องธรรมดามันจะเป็นทางออกที่ดีที่สุดในการแก้ไขปัญหา)
384

1

อีกแนวคิดหนึ่งคือการตั้งค่าตัวแปรสภาพแวดล้อมในคำสั่ง ssh และเรียกใช้เชลล์แบบโต้ตอบเช่น ฉันพยายามเรียกใช้เชลล์แบบโต้ตอบด้วย env-var 'MANWIDTH':

ssh example.com 'MANWIDTH=120 bash -li'

0

คุณสามารถตั้งค่าต่อโฮสต์ config โดยใช้ไฟล์. ssh / config ตัวอย่างเช่น:

Host example.com
SendEnv FOO

โปรดทราบว่าเซิร์ฟเวอร์ต้องรองรับด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.