우분투 서버에 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
그런 다음 로그인 할 때 디렉토리가 지정된 경우 디렉토리 인 경우 환경 변수에 지정된 디렉토리로 자동 변경됩니다.