주어진 SSH 호스트에 대한 변수 설정


17

에서를 사용하여 ssh_config일부 환경 변수를 호스트로 내보내도록 선택할 수 있습니다 SendEnv.

호스트 당이 변수에 대해 지정된 값을 적용하는 방법도 있습니까? 예를 들어, 호스트에 연결할 때만 $FOO값으로 변수를 내보낼 수 있습니까?barexample.com


답변:


16

에서 환경 변수에 특정 을 제공 할 수는 없지만 ssh_config기존 환경 변수를 특정 호스트에만 보낼 수 있습니다.

Host example.com
    SendEnv FOO

체인을 완성하려면 :

FOO=bar ssh user@example.com

마지막으로, 원격 서버에 나열된 환경 변수가 있어야합니다 AcceptEnv그것의를 sshd_config.

AcceptEnv FOO

피하고 싶은 것은 무엇입니까?
Michael Hampton

1
주어진 값으로 변수를 보내려면 별칭을 작성해야합니다.
ℝaphink

컴퓨터가 당신의 마음을 읽지 못하게하지 않는다면, 당신이 할 수있는 일은 많지 않습니다. :)
Michael Hampton

6
그래도 내 의심을 확인해 주셔서 감사합니다 ;-) 내가 좋아하는 것은 ;) 와 비슷 SetVar FOO='bar'했을 것 입니다 ssh_config.
ℝaphink

2
저에게 반복되는 사례는 오래된 시스템이 지원하지 않으므로 TERM=tmux-256color원격 호스트 (와일드 카드 사용) 당 폴백을 원합니다.
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
의아해하는 독자를위한 참고 사항 (처음 읽었을 때와 같이) : 이것은 2018 년 8 월에 릴리스 된 OpenSSH 7.8 이후의 새로운 기능이며 OS 업데이트를 통해 일반 사용자가 사용할 수있게 되려면 다소 시간이 걸립니다. (하지만 일단 그것이 일반화되면, 그것은 문제에 대한 최상의 해결책이 될 것입니다)
Irfy

1

또 다른 아이디어는 ssh 명령에서 환경 변수를 설정하고 대화식 쉘을 실행하는 것입니다. env-var 'MANWIDTH'로 대화 형 쉘을 호출하려고합니다.

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

0

.ssh / config 파일을 사용하여 호스트 별 구성 값을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

Host example.com
SendEnv FOO

서버도이를 지원해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.