Изменение .profile для правил SSH

Я хочу создать следующий сценарий в .profile, таким образом, каждая сессия SSH пошла бы непосредственно в свое место:

  1. Проверьте указанный хост (user@host).
  2. Если хост = host1 - cd/var/www/site1

и т.д.

На помощь! :)

0
задан 17.11.2017, 07:14

2 ответа

Я - вполне уверенный SSH, не отправляет имя хоста на сервер (это просто использует его локально для поиска IP-адреса и к ключам от английского замка и т.д.). По крайней мере, не способом, который может использоваться в сценарии оболочки.

Посмотрите вывод env - единственное имя хоста является каноническим, независимо от того, какое имя использовалось в команде ssh.

Некоторые клиенты SSH и некоторые серверы SSH позволяют клиенту указывать значение для одной или нескольких переменных среды, очевидно Вы могли использовать это для сообщения сервера который каталог переключиться на. Например, см. конфигурацию Шпаклевки, соединение, данные или опцию OpenSSH SendEnv.

Иначе у Вас есть один идентификатор пользователя для каждого веб-сайта с различным доменным именем, или необходимо предложить пользователю меню.

0
ответ дан 27.11.2019, 18:43

Ваш вопрос неясен: Вы достигаете того же хоста через несколько псевдонимов? Вы достигаете различных хостов та доля a .profile? Вы пытаетесь выполнить команды на основе исходного имени хоста или на названиях целевого узла?

Если Вы хотите различные эффекты на различные удаленные хосты, просто тестируете удаленное имя хоста:

case "$(hostname)" in
  host1) cd /var/www/site1;;
esac

Если Вы хотите различные эффекты на тот же хост, можно использовать SendEnv директивы в Вашем ~/.ssh/config отправить переменные среды (принимающий Вы используете клиент OpenSSH). Они должны быть включены с AcceptEnv директива по стороне сервера, которая часто является не случаем. Однако LC_* переменные обычно разрешаются через, таким образом, можно передать информацию с помощью них. На стороне клиента, выполненной LC_VIRTUAL_HOST=site1 ssh common-host.provider.com. В Вашем .profile на сервере записать

case "$LC_VIRTUAL_HOST" in
  host1) cd /var/www/site1;;
esac
0
ответ дан 27.11.2019, 18:43

Теги

Похожие вопросы