"ssh somehost"다음에 다음 명령을 트리거하려고합니다.
export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'
아무것도 작동하지 않는 것 같습니다, 어떤 제안?
ssh root@MachineB 'bash -s' < local_script.sh
컨텐츠를 실행 하도록 실행할 수 있습니다 . local_script.sh
MachineB
"ssh somehost"다음에 다음 명령을 트리거하려고합니다.
export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'
아무것도 작동하지 않는 것 같습니다, 어떤 제안?
ssh root@MachineB 'bash -s' < local_script.sh
컨텐츠를 실행 하도록 실행할 수 있습니다 . local_script.sh
MachineB
답변:
나는 그것을 할 수 있다고 생각하지 않습니다.
우선 나는 당신의 명령을 다시 써야했습니다. 비록 이것이 당신이 얻고 자하는 것이 달성 될 수 없다는 사실 (나중에 보라)에 의해 무효화되지만, 그렇게하는 방법은 어느 정도 흥미롭고 일반적이므로, 나는 그것을 논의 할 것입니다. 나는 당신의 명령을
ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=${COLOR[@]}'
그 이유는 로컬 쉘이 $HOSTANME
그 local
값 으로 대체하는 것을 막을 필요가 있기 때문에 원격 서버에 전달하는 것은 작은 따옴표로 묶어야합니다 '. 이것이 작동 하려면 명령 내부에 작은 따옴표 가 없어야 하므로 원격으로 실행되도록 명령에 작은 따옴표가 나타나지 않도록 다시 작성해야했습니다. 나는 이것을 배열로 관리했다 COLOR
. 명령
COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=${COLOR[@]}
현지에서 잘 작동합니다 (색상 선택은 내 것입니다).
ssh를 통해 환경 변수를 내보내는 방법에는 두 가지가 있습니다. 먼저, AcceptEnv
서버 /etc/ssh/sshd_config
파일 에서 변수 를 변경할 수 있습니다 : 그러나 수동 상태
수락
클라이언트가 보낸 환경 변수가 세션의 환경에 복사 될 것을 지정합니다 .
여기에서 강조는에없는 세션 : 전역 변화.
두 번째 방법은 PermitUserEnvironment
변수를 사용하는 것입니다.
허가 사용자 환경
Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed by sshd. The default is "no". Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD.
보시다시피 , 원격 사용자가 전역 환경 변수를 변경할 수 없도록ssh
주의 하십시오 .