SSH 로그인시 스크립트로드 (비 대화식)


0

비 대화식 원격 세션에서 환경 모듈 을로드 하고 그에 따라 환경 변수를 설정 하려고합니다 .

예를 들어, 내 bashrc에서 나는 보통 전화

module load /path/to/cmake/3.x.x

로그인 쉘에서 "cmake --version"을 실행하면

cmake v3.x.x

그러나 비 대화식 원격 세션으로 이것을 실행하면 cmake v2.xxx가 귀머거리로 간주됩니다.

ssh me@machine 'cmake --version'

이 문제를 해결하기 위해 / etc / ssh / sshd_config를 "PermitUserEnvironment yes"로 업데이트하려고했습니다.

~ / .ssh / environment 파일 내에서 환경 변수를 적절하게 설정하고 $ PATH를 업데이트 할 수 있습니다. 이것은 작동하며 ssh를 통해 원격으로 명령을 실행할 때 경로 업데이트 된 것을 볼 수 있습니다 . 즉

ssh me@machine 'echo $PATH'

~ / .ssh / rc 파일을 만들어 DOES가 호출되는지 확인할 수 있습니다. 그러나 동일한 "모듈로드 /path/to/cmake/3.xx"를 넣어도 여전히 v2를로드하는 것을 볼 수 있습니다. .ssh / rc 내에서 PATH를 업데이트하고 내 보내면 마찬가지입니다. 업데이트되지만 원격으로 사용되는 것과 다른 쉘에 적용하는 것 같습니다.

~ / .ssh / environment가 현재 쉘의 항목을 수정하는 이유를 이해하지 못하지만 ~ / .ssh / rc는 다른 쉘로 수정합니다.

환경 모듈을 원격으로 사용하는 방법에 대한 아이디어가 있습니까?

감사

답변:


0

필자의 경험으로는 확실히 RHEL과 Fedora에서 ~ / .bashrc는 여러분이 말하는 "비대화 형"SSH 연결에서 실행됩니다. 또한 RHEL에서 모듈 시스템을 사용하고 SSH를 통해 명령을 실행할 때 ~ / .bashrc에서 모듈을로드하는 데 아무런 문제가 없습니다.

UNIX / Linux StackExchange 사이트의 다음 질문 / 답변에 따르면 일부 배포판에는 기본 .bashrc (/ etc / skel의)에 코드가 포함되어 비대화 형인 경우 중단됩니다. 당신의 상단? SSHD에서 실행할 때 bash가 ~ / .bashrc를 실행한다는 것을 확인하는 것으로 보이는 토론도 있습니다.

https://unix.stackexchange.com/questions/257571/why-does-bashrc-check-whether-the-current-shell-is-interactive


질문을하거나 답을 쓰십니까? 문의와 관련하여 의견을 남기려는 경우, 의견을 제출할 수있는 방법을 이해할 수있는 기회가있을 때 "댓글을 달려면 50 개의 평판이 필요한 이유"를 읽으십시오 .
Pimp Juice IT

@Stingray : 예, 확실히 ~ / .bashrc 또는 / etc / bashrc를 호출하지 않으므로 대신이 경로를 사용하려고했습니다. RHEL 6.9를 사용하고 있습니다.
Jordan

RHEL6.9도 여기에 있으며 "ssh x @ y cmd"를 실행하면 ~ / .bashrc가 원격 시스템에서 확실히 실행됩니다. RHEL4 / 5 / 7에서도 동일합니다. 이상한, 나는 당신의 환경에서 무엇이 다른지 궁금합니다.
Stingray
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.