.ssh/environment: 변수 확장(PATH=...:$PATH)이 작동해야 합니까?

.ssh/environment: 변수 확장(PATH=...:$PATH)이 작동해야 합니까?

방금 OpenSSH Server의 설정을 발견했습니다 ~/.ssh/environment. PermitUserEnvironment변수를 리터럴 문자열로 설정하는 데 유용합니다.예를 들어:

# host ~/.ssh/environment
PATH=/home/rlue/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
# client
$ ssh host 'echo $PATH'
/home/rlue/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

그러나 변수 확장은 작동하지 않습니다.

# host ~/.ssh/environment
PATH=/home/rlue/.local/bin:$PATH
# client
$ ssh host 'echo $PATH'
/home/rlue/.local/bin:$PATH

변수 확장 여부에 대한 답변이 서로 다른 이 주제를 다루는 여러 질문을 찾았습니다.~해야 한다일하든 아니든:

이전 게시물의 작성자는 내가 실행 중인 OpenSSH 서버와 동일한 버전(Debian 안정 버전의 1:7.9p1-10+deb10u2)을 사용할 수 있음을 확인했지만 그의 지시를 정확히 따랐으며 여전히 오류가 발생합니다. 텍스트 $PATH(즉,변수 확장 없음).

누구든지 명확한 대답을 가지고 있습니까?~해야 한다작동 중이라면 내 구성에 무엇이 빠졌습니까?

답변1

소스 코드를 보면 관련 기능은 다음과 같습니다.read_environment_file()존재하다session.c그리고child_set_env()존재하다misc.c. 이는 간단한 함수입니다. 양식의 행을 읽고 var=value설정하고 한계와 유효성을 확인하기만 하면 됩니다. 그러나 값에 대한 추가 처리는 수행하지 않습니다. 이것은 또한맨페이지설명하다:

또한 파일이 존재하고 사용자가 환경을 변경하도록 허용된 경우 ssh는 ~/.ssh/environment" " 형식의 행을 읽고 환경에 추가합니다.VARNAME=value

따라서 문서나 코드를 통해 수행해서는 안 됩니다.

관련 정보