특정 디렉토리에 SSH로 연결하는 방법은 무엇입니까?

특정 디렉토리에 SSH로 연결하는 방법은 무엇입니까?

나는 종종 서버에 로그인하고 특정 디렉토리로 CD를 이동합니다. 이 두 명령을 하나로 단순화할 수 있습니까?

ssh bob@foo  
cd /home/guest

가능하다면 "foo"에 대한 내용은 변경하지 않고 싶습니다. 이를 지우려면 서버 관리자와 협력해야 하기 때문입니다. 나는 bash를 사용하지만 다른 쉘에서 답변을 얻을 수 있습니다.

답변1

이는 OpenSSH에서 작동합니다.

ssh -t bob@foo 'cd /home/guest && exec bash -l'

마지막 매개변수는 로그인 쉘에서 실행됩니다. 대화형 셸에 필요한 의사 터미널을 강제 할당하기 -t위해 전달된 플래그입니다. bash에 다음 과 같이 전달된 플래그sshssh-lbash로그인 쉘.

답변2

~bob/.bash_profile 파일의 마지막 줄을 foo에 넣으세요.

cd /home/guest >& /dev/null

이제 로그인할 때마다(SSH를 통해든 다른 방식으로든) cd 명령이 실행됩니다. SSH를 망칠 필요가 없습니다.

"가능한 경우 'foo'에 대한 변경을 피하고 싶다"고 쓴 것을 알고 있습니다. 하지만 bob@foo 계정이 귀하의 것이라면 자신의 .bash_profile을 변경하는 것이 허용되어야 합니다. 그렇죠?

답변3

@EvanTeitelman의 솔루션과 유사하게 이 작업을 수행할 수도 있습니다.

$ ssh -t bob@foo "cd /tmp ; bash"

또는 반대편의 쉘을 모르는 경우:

$ ssh -t bob@foo "cd /tmp && exec \$SHELL"

또는 다음과 같습니다:

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'

관련 정보