Đặt biến cho máy chủ SSH cụ thể


17

Trong ssh_config, người ta có thể chọn xuất một số biến môi trường cho máy chủ bằng cách sử dụng SendEnv.

Có cách nào để buộc một giá trị nhất định cho biến này, trên mỗi máy chủ không? Ví dụ, chỉ có thể xuất biến $FOOvới giá trị barkhi kết nối với máy chủ example.com?


Câu trả lời:


15

Bạn không thể đưa ra một giá trị cụ thể cho một biến môi trường ssh_config, nhưng bạn chắc chắn chỉ có thể gửi biến môi trường hiện tại cho các máy chủ cụ thể.

Host example.com
    SendEnv FOO

Để hoàn thành chuỗi:

FOO=bar ssh user@example.com

Cuối cùng, máy chủ từ xa phải có các biến môi trường được liệt kê trong AcceptEnvtrong của nó sshd_config.

AcceptEnv FOO

Chính xác thì bạn muốn tránh cái gì?
Michael Hampton

1
Phải viết một bí danh để gửi một biến có giá trị cho trước.
ℝaphink

Xin lỗi, bạn không thể làm gì khác ... trừ khi bạn có thể khiến máy tính đọc được suy nghĩ của bạn. :)
Michael Hampton

6
Cảm ơn vì đã xác nhận sự nghi ngờ của tôi mặc dù ;-) Những gì tôi thích sẽ là một cái gì đó giống như SetVar FOO='bar'trong ssh_config;)
ℝaphink

2
Trường hợp định kỳ đối với tôi là các hệ thống cũ không hỗ trợ TERM=tmux-256colornên tôi muốn dự phòng cho mỗi máy chủ từ xa (có ký tự đại diện).
Jed

4

Bạn có thể đưa ra một giá trị cụ thể bằng cách sử dụng SetEnvtrong ~/.ssh/config, vd

Host *
  SetEnv FOO=bar

Theo man ssh_config:

Chỉ định trực tiếp một hoặc nhiều biến môi trường và nội dung của chúng sẽ được gửi đến máy chủ. Tương tự như vậy SendEnv, máy chủ phải được chuẩn bị để chấp nhận biến môi trường.

Giả sử máy chủ của bạn có dòng sau /etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

Kiểm tra cũng: man ssh_configman sshd_config.


2
Lưu ý cho người đọc khó hiểu (như bản thân tôi, khi tôi mới đọc bài này): Đây là bản mới kể từ OpenSSH 7.8, được phát hành vào tháng 8 năm 2018 và sẽ mất một thời gian để nó có sẵn cho người dùng trung bình thông qua các bản cập nhật hệ điều hành. (Nhưng một khi nó trở nên phổ biến, đó sẽ là giải pháp tốt nhất cho vấn đề này)
Irfy

1

Một ý tưởng khác là đặt các biến môi trường trong lệnh ssh và chạy shell tương tác, vd. Tôi đang cố gắng gọi một trình bao tương tác với env-var 'MANWIDTH':

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

0

Bạn có thể đặt từng giá trị cấu hình máy chủ bằng tệp .ssh / config. Ví dụ:

Host example.com
SendEnv FOO

Lưu ý rằng máy chủ cũng phải hỗ trợ nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.