Назад | Перейти на главную страницу

Измените каталог по умолчанию, когда я SSH на сервер

Мне было интересно, есть ли способ изменить каталог по умолчанию, в который я попадаю после того, как я SSH на моем сервере Ubuntu.

В 99% случаев, когда я вхожу на свой сервер, я обращаюсь к файлам в определенном каталоге:

/var/www/websites

Есть ли файл конфигурации, который я могу отредактировать, чтобы убедиться, что я попал прямо в этот каталог при входе в систему?

Этого можно добиться двумя способами:

  • Измените свой домашний каталог на сервере на / var / www / sites (на самом деле это не очень хорошая идея)
  • Добавить cd /var/www/websites до конца твоего .bashrc. Я использую его на наших марионеточных мастерах, так как я всегда хочу быть в / etc / puppet / environment / dkaarsemaker вместо моего домашнего компьютера :-)

Если вы используете ключи для входа по 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

Затем он автоматически изменит каталог на тот, который указан в переменной среды при входе в систему, если он указан и если это каталог.