서버에 SSH 연결할 때 기본 디렉토리 변경 %가 특정 디렉토리

우분투 서버에 SSH를 넣은 후에 넣을 기본 디렉토리를 변경하는 방법이 있는지 궁금합니다.

서버에 로그인 할 때 시간의 99 %가 특정 디렉토리 내의 파일에 액세스하는 것입니다.

/var/www/websites

로그인 할 때이 디렉토리에 바로 넣을 수 있도록 구성 파일을 편집 할 수 있습니까?



답변

이를 달성하는 두 가지 방법이 있습니다.

  • 서버의 홈 디렉토리를 / var / www / websites로 변경하십시오 (실제로는 좋지 않습니다)
  • cd /var/www/websites끝에 추가 하십시오 .bashrc. 나는 항상 내 홈 디렉토리 대신 / etc / puppet / environments / dkaarsemaker에 있기를 원하므로 puppetmasters에서 이것을 사용합니다 🙂

답변

당신은 SSH 로그인에 키를 사용하는 경우에 당신은 앞에 붙이는 경로를 변경할 수 command=의 핵심 전에에 ~/.ssh/authorized_keys원격 서버. 예:

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

동일한 사용자에 대해 여러 키를 생성하고 사용하는 것이 좋습니다. 서버의 한 키에는 다른 키에는없는 명령이 포함될 수 있습니다. 이렇게하면 로그인시 예상 동작을 선택할 수 있습니다. 로컬로 간단히 마무리 할 수 ​​있습니다 ~/.ssh/config.

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

이것이 일어날 것입니다 :

local$ ssh websites-my-host
webmaster@realhostname:/var/www/websites$ _

또는:

local$ ssh my-host
webmaster@realhostname:~$ _

답변

Openssh sshd는 기본적으로 클라이언트에서 다음 환경 변수를 허용합니다.

AcceptEnv LANG LC_*

이를 사용하여 다음과 같이 클라이언트의 로컬 환경에서 서버로 값을 보낼 수 있습니다.

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server

SendEnv 지시문을 ~ / .ssh / config에 배치하여 명령 줄에 포함시키지 않아도됩니다.

~ / .profile에 다음을 배치하면 (대화식 로그인에만 영향을 주려면 .profile을 사용하고, 모든 로그인에 영향을 주려면 .bashrc를 사용하십시오) :

if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
  cd "$LC_CDPATH";
fi

그런 다음 로그인 할 때 디렉토리가 지정된 경우 디렉토리 인 경우 환경 변수에 지정된 디렉토리로 자동 변경됩니다.