Змініть каталог за замовчуванням, коли я SSH на сервер


42

Мені було цікаво, чи є спосіб змінити каталог за замовчуванням, який я ввожу після того, як я SSH на свій сервер Ubuntu.

99% часу, коли я входжу на свій сервер, це доступ до файлів у певному каталозі:

/var/www/websites

Чи є файл конфігурації, який я можу редагувати, щоб переконатися, що я потрапив прямо до цього каталогу під час входу?

Відповіді:


62

Є два способи досягти цього:

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

Спасибі. Я відредагував файл bash.bashrc, який знаходився в каталозі / etc. Працював частування :)
Боб Флеммінг

7
О, я б цього не робив, оскільки це впливає на всіх користувачів. Краще відредагувати /home/yourlogin/.bashrc
Dennis Kaarsemaker

6
Ви можете поставити це .profileзамість цього .bashrc, але це залежить від вашого випадку використання. .profileвиконується лише для інтерактивних входів (наприклад, оболонки), але .bashrcтакож виконується для неінтерактивних входів (наприклад, scp, rsync тощо). Також .profile швидше називається оболонками, які не є bash (наприклад, zsh).
фрад

.bashrc виконується, коли ви робите "exec bash", щоб оновити баш. Зміна bashrc для спеціального випадку використання (тут ssh логін) не корисна.
користувач3123159

14

Якщо ви використовуєте ключі для 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:~$ _

3
Я вважаю за краще це питання вище прийнятого. Це дозволяє багатьом користувачам використовувати одного і того ж користувача на сервері і все ще мати можливість налаштувати те, що відбувається, коли ви особисто входите в систему. Набагато більш гнучкі та правильні, як і інші.
testuser

1
Тут ви повинні бути дуже обережними, оскільки додавання команд до ~ / .ssh / pooblasti_keys впливає на інші інструменти, засновані на ssh, такі як rsync, scp. Ці команди будуть просто висіти
warunapww

1
Ви можете використовувати $SSH_ORIGINAL_COMMANDзамість того, /bin/bash -lщоб отримати інструменти для роботи (у моєму випадку, hg). Або $SHELLякщо ви не хочете, щоб жорсткий код баш. Не знаєте, як отримати інструменти та людські логіни для роботи.
mpen

Лише застереження: Якщо ви вимкнули PasswordAuthentication (див. Askubuntu.com/questions/346857/… ) і випадково помилково введете командний рядок, ви можете заблокувати себе із системи.
karan.dodia

6

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

Тоді він автоматично змінить каталог на той, що вказаний у змінній оточення при вході в систему, якщо він вказаний і якщо це каталог.


1
+1 для LC_*хитрості
Орієнт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.