특정 디렉토리로 SSH하는 방법?


39

자주 서버에 로그인 한 다음 특정 디렉토리로 cd합니다. 이 두 명령을 하나로 단순화 할 수 있습니까?

ssh bob@foo  
cd /home/guest

가능한 경우 'foo'에서 아무것도 변경하지 않기를 원합니다. 서버 관리자에게 문의해야하기 때문입니다. 나는 bash를 사용하지만 다른 쉘에서 대답 할 수 있습니다.

답변:


22

~ bob / .bash_profile 파일의 마지막 줄을 foo에 넣으십시오.

cd /home/guest >& /dev/null

이제 로그인 할 때마다 (SSH 또는 다른 방법으로) cd 명령이 실행됩니다. ssh로 주변을 둘러 볼 필요가 없습니다.

"가능한 경우 'foo'에 대한 변경을 피하고 싶다"고 썼지 만 bob @ foo 계정이 귀하의 계정이라면 자신의 .bash_profile을 변경할 수 있습니다.


2
왜 그렇습니까, 나는 이것이 잘 작동 할 것이라고 생각합니다. 변경을 위해 IT로부터 허가를받을 필요는 없습니다. 왜> & / dev / null이 필요한지 자세히 설명해 주시겠습니까?
spuder

6
나는 그렇게 생각합니다 &> /dev/null. cd가 디렉토리를 / home / directory로 변경하지 못한 경우에 표시 될 수있는 오류 메시지를 방지합니다. 해당 메시지를 보려면 해당 메시지를 제외하면됩니다.
konsolebox

5
>&&>배쉬에서 동일합니다. 후자의 스타일이 선호됩니다.

또한 / dev / null로 리디렉션하면 "cd"와 같이 디렉토리 이름이 화면에 표시되지 않습니다.
DanB

41

이것은 OpenSSH와 함께 작동합니다 :

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

마지막 인수는 로그인 쉘에서 실행됩니다. -t에 전달 플래그 ssh힘은 ssh대화 형 쉘에 필요한 의사 터미널을 할당합니다. -l에 전달 플래그 bash시작은로 비난 로그인 쉘 .


3
bash에 -l 옵션을 추가하면 도움이 될지 궁금합니다. ... && exec bash -l
konsolebox

1
@ konsolebox : 좋은 생각입니다. 나는 그것을 내 대답에 추가했다.

17

@EvanTeitelman의 솔루션과 유사하게 다음과 같이 할 수도 있습니다.

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

또는 다른 쪽 끝의 껍질을 모르는 경우 :

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

또는 이렇게 :

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.