여러 사용자가 원격 컴퓨터에서 동일한 사용자 계정을 공유하는 상황이 있습니다. 나는 내 자신의 파일을 작성하는 "개인" 디렉터리를 가지고 .zshrc
있으며 다음과 같은 방법을 원합니다.
- SSH 구성 파일(예
ControlMaster auto
: ) 의 지시문을 사용하여 원격 시스템에서 SSH 세션을 시작합니다. - 이 세션은 Z 쉘을 실행합니다.
- 내 "개인" 디렉터리에서 실행됩니다
.zshrc
(공유 사용자의 홈 디렉터리가 아님).
그러한 ssh 세션을 시작하는 별칭이나 쉬운 방법이 있다면 좋을 것입니다(이것이 제가 OpenSSH의 구성 파일 사용을 고려하는 이유입니다). 그러나 다른 아이디어도 열려 있습니다!
OpenSSH 구성 파일을 사용하시나요?
OpenSSH의 ssh_config를 읽었습니다.매뉴얼 페이지LocalCommand
지시문을 사용하여 실행할 명령을 지정할 수 있습니다.현지의서버에 성공적으로 연결한 후. 이로 인해 config
파일에 실행할 명령을 알려주는 방법이 있을 수 있다고 생각됩니다.떨어져서서버에 연결했는데 작동하지 않는 것 같습니다.
답변1
명령을 원격으로 실행하는 가장 확실한 방법은 SSH 명령줄에서 명령을 지정하는 것입니다. ssh 명령은 항상 원격 사용자의 쉘에 의해 해석됩니다.
ssh [email protected] '. ~/.profile; command_that_needs_environment_variables'
ssh -t [email protected] '. ~/.profile; exec zsh'
공유 계정은 일반적으로 좋은 생각이 아닙니다. 가능하면 각 사용자마다 별도의 계정을 만드십시오. 공유 계정에 대한 액세스 권한이 없으면 다음과 같이 별칭을 만들 수 있습니다.
ssh -t [email protected] 'HOME=~/bob; . ~/.profile; exec zsh'
공개 키 인증을 사용하는 경우(다시 권장됨) ~/.ssh/authorized_keys
에서 확인할 수 있습니다.이 답변더 많은 설명을 원하시면. ~/.ssh/authorized_keys
서버에서 주요 라인을 편집하십시오(모두 한 라인에 있음):
command="HOME=$HOME/bob;
if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
eval \"$SSH_ORIGINAL_COMMAND\";
else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]
답변2
서버에 연결한 후 원격으로 명령을 실행하려면 .ssh/config 파일에 다음 코드 조각을 추가하세요.
PermitLocalCommand yes
Host <server-ip-address>
LocalCommand *command*