Я могу выполнить некоторые команды при запуске ssh сессии прежде, чем добраться до интерактивного режима?

Владелец utmp файла root:utmp и полномочия 664?

Если полномочия прекрасны, и это - общедоступный сервер, и ssh доступ на открытом интерфейсе включен затем, это могло произойти из-за взлома. Никакой взломщик не хотел бы, чтобы Вы знали, что он вошел в систему, таким образом, имеет смысл изменять utmp, btmp и wtmp файлы. Если это верно, измените пароль root, ищите руткиты / открытые порты, установите очень строгий брандмауэр, отключите прямой корневой вход в систему с помощью SSH, установите denyhosts и т.д. Но это мог просто быть я являющийся параноидальным. Я только что проанализировал одну попытку взлома до сих пор, и я сделал взломщиков наблюдателя, удаляющих / изменяющий btmp и wtmp записи. Я предполагаю, что они делают то же к utmp записям также.

13
задан 7 July 2010 в 04:53
4 ответа

Я самоотвечаю, поскольку я наконец обнаружил секрет. Ни один -t опция для ssh, ни -l опция для bash будет вести для входа в систему в оболочку самостоятельно - но в комбинации они работают.

ssh user@host.com -t 'cd /some/where; FOO=BAR NUMBER=42 bash -l' каталог изменений, устанавливает переменные среды и затем запускает надлежащую оболочку входа в систему (единственная разница, которую я нашел, до сих пор это /etc/motd не отображен этот путь - это обычно sshили loginответственность, нет bash- кроме этого все, кажется, работает отлично, и все переменные окружения идентичны).

Они среда / изменения каталога происходят после ssh, таким образом, они не ограничиваются PermitUserEnvironment и связанные настройки (точно как запланировано), но прежде .bashrc/.profile быть выполненным. Это имеет позитивные аспекты и оборотные стороны - более трудно просто переопределить что-то, что установлено от удара init сценарии как PS1, но легче упаковать точно правильные значения в ssh командные строки, и имеют .profile сделайте весь тяжелый подъем.

И, если действительно необходимо, на самом деле довольно легко заставить удар выполнять что-то после .profile с командной строкой как ssh user@foo.com -t 'cd /mnt; echo ". ~/.bash_profile; PS1=\"\\h-\w \"" >~/xxx; bash --init-file ~/xxx' - очень ужасный при помещении тот путь, но они альтернатива .profile файлы могут быть подготовлены прежде. (насколько я могу сказать bash имеет несколько местоположений кандидата для .profile сценарий и выполнит первый найденный - . file разве такие автоматические нейтрализации не имеют, таким образом, необходимо будет проверить, где нормальное profile если Вы хотите сделать это),

13
ответ дан 2 December 2019 в 21:25

Отредактируйте .bashrc и включите Ваши SSH-определенные параметры среды в:

if [ $SSH_TTY ]; then
    ...
fi

Это позволило бы Вам добавлять настройки специально для сессий SSH. 'Курс, если все Вы хотите, состоит в том, чтобы установить произвольные переменные среды прямо в начале, которые варьируются сессией, я не знаю, как можно высказать предположение машины их для Вас кроме ввода их... на независимо от того, чем, Вам будет нужно некоторое тестируемое условие основывать выбор настроек.

2
ответ дан 2 December 2019 в 21:25

От ssh страница справочника:

Кроме того, ssh читает ~/.ssh/environment и добавляет строки формата “VARNAME=value” к среде, если файл существует, и пользователям разрешают изменить их среду. Для получения дополнительной информации посмотрите опцию PermitUserEnvironment в sshd_config (5).

который говорит:

PermitUserEnvironment
Указывает, обрабатываются ли ~/.ssh/environment и среда = опции в ~/.ssh/authorized_keys sshd (8). Значение по умолчанию является "нет". Включение обработки среды может позволить пользователям обойти ограничения доступа в некоторых конфигурациях с помощью механизмов, таких как LD_PRELOAD.

Это средство могло использоваться для условного выполнения операторов в удаленном ~/.bashrc использование if структура, что предложенный Mickey.

2
ответ дан 2 December 2019 в 21:25

Просто запустите следующим образом: ssh -t yourdomain 'cd / yourpath; bash '

  • -t : чтобы появилось приглашение sh
  • ; bash : чтобы он возвращал управление, несмотря на выполнение команды (здесь cd ) и выход из сеанса ssh
1
ответ дан 2 December 2019 в 21:25

Теги

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