Мне было интересно, есть ли способ изменить каталог по умолчанию, в который я попадаю после того, как я SSH на моем сервере Ubuntu.
В 99% случаев, когда я вхожу на свой сервер, я обращаюсь к файлам в определенном каталоге:
/var/www/websites
Есть ли файл конфигурации, который я могу отредактировать, чтобы убедиться, что я попал прямо в этот каталог при входе в систему?
Этого можно добиться двумя способами:
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
Затем он автоматически изменит каталог на тот, который указан в переменной среды при входе в систему, если он указан и если это каталог.