Установка переменной имени хоста прямо после входа в систему SSH

Для rsync это имеет a --no-motd можно использовать, чтобы подавить motd для сценария и только видеть вывод того, что передает rsync. Похоже, что это было добавлено в rsync 3.x, так как я не вижу той опции в 2.x.

Страница справочника перечисляет протест о не использовании его при попытке получить список модулей, Вы можете rsync:

- нет

Эта опция влияет на информацию, которая производится клиентом в начале передачи демона. Это подавляет текст message-of-the-day (MOTD), но он также влияет на список модулей, которые демон отправляет в ответ на "rsync хост::" запрос (из-за ограничения в rsync протоколе), поэтому опустите эту опцию, если Вы хотите запросить список модулей от демона.

Для scp, пробуя касание файла ~/.hushlogin. Когда я scp файлы, я не вижу motd, хотя, но Ваш набор могло бы отличаться. Страница справочника для login имеет больше информации:

Если файл .hushlogin существует, то "тихий" вход в систему выполняется (это отключает проверку почты и печать прошлого раза входа в систему и сообщение дня). Иначе, если/var/log/lastlog существует, прошлый раз входа в систему печатается (и текущий вход в систему зарегистрирован).

3
17.10.2013, 07:42
3 ответа

В то время как Вы не можете изменить имя хоста для единственного процесса (хорошо, это могло бы быть возможно с пространствами имен), можно измениться HOSTNAME переменная среды.

Что касается передачи environmnet переменные от клиента к серверу, посмотрите AcceptEnv и PermitUserEnvironment optins для sshd и SendEnv для ssh (см. страницы справочника sshd_config(5) и ssh_config(5) для деталей).

1
27.01.2020, 21:23

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

Можно видеть переменную такой как $HOSTNAME но это часто только для пользы удобства и не изменяет Ваше системное имя хоста никаким значимым способом.

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

Команда имени хоста

Можно изменить имя системы в свободном типе пути путем выдачи команды:

$ sudo hostname <somename>

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

Учитывая это я нашел бы это трудным путем для потери работоспособности, и это будет вызвано с большим взламыванием и разрезанием для переопределения имени хоста системы в простом способе.

Я оставлю Вас этим руководством, которое показывает некоторые вещи, которые, вероятно, собьют Вас с толку при попытке сделать это. Это названо: Как Изменить Имя хоста Системы Linux.

2
27.01.2020, 21:23
  • 1
    Это зависит, как это запрашивается тем, что он использует. Если они работают hostname, можно добиться цели приемов ПУТИ и пользовательского hostname в основанном на пользователе bin каталог. Объединение, что с переменными среды на ключ, и он мог осуществить его. –  kurtm 17.10.2013, 07:52
  • 2
    @kurtm - да я не хотел подразумевать, что это было невозможно, просто что это могут быть трудные данные различные инструменты, запросит для имени хоста по-разному. Это очень зависит от дистрибутива также. –  slm♦ 17.10.2013, 07:54
  • 3
    На Linux можно установить имя хоста в пространстве имен. С очень недавними ядрами (≥3.8), это больше не требует полномочий пользователя root. –  Gilles 'SO- stop being evil' 18.10.2013, 00:29

SSH обычно настраивается для передачи некоторых переменных среды, которые считают безопасными и системно-независимыми, а именно, связанные с локалью переменные среды: LC_*. Таким образом на многих установках, можно передать данные через среду путем установки переменной как LC_DESIRED_HOSTNAME. Каким переменным среды сервер позволяет, Вы передать определяетесь AcceptEnv начинание sshd_config, и который переменные среды, которые клиент пытается передать, определяются SendEnv начинание ~/.ssh/config.

Можно установить имя хоста для всех процессов до следующей перезагрузки путем вызова hostname команда с аргументом как корень.

На Linux, если Вы работаете unshare -u someprogram, затем someprogram и его подпроцессы будут работать в отдельном пространстве имен, которое имеет его собственное имя хоста. Имя хоста в пространстве имен начинается идентичный остальной части системы, но это может быть изменено независимо. Это должно быть сделано как корень, если Ваша версия ядра не 3.8 или выше.

unshare -u -- sh -c 'hostname "$LC_HOSTNAME"; service hadoop start'
0
27.01.2020, 21:23

Теги

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