30

Есть ли способ обойти или предотвратить выполнение ~/.profile при входе на удаленный сервер Linux с использованием ssh или putty?

5 ответов5

29

Для Баш:

$ ssh hostname "bash --noprofile"
14

Если вы хотите отключить все сценарии входа, вы можете использовать флаг --noprofile чтобы отключить /etc/profile , ~/.profile и т.д., И --norc чтобы отключить ~/.bashrc следующим образом:

$ ssh 127.0.0.1 "bash --noprofile --norc"

Имейте в виду, что вы также можете запустить альтернативную оболочку, если она доступна. Я должен был использовать это после того, как испортить в chsh:

$ ssh 127.0.0.1 sh

Это, скорее всего, приведет вас к пустой оболочке (без приглашения), поэтому дайте ему ls чтобы убедиться, что он работает.

4

Если ваша целевая машина находится в оболочке bash:

user@host:/$ ssh hostname "bash --noprofile"

В качестве альтернативы, если вы хотите использовать другой профиль

user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
1

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

Одной из альтернатив может быть сценарий профиля, который определяет само соединение SSH и ведет себя соответственно. Поскольку соединения SSH обычно устанавливают несколько переменных среды, это легко проверить. Достаточно добавить что-то вроде следующих строк в начало вашего профиля:

if [ "$SSH_CONNECTION" != "" ]; then
  echo Logging in with ssh
  return
else
  echo Logging in with something that is not ssh
fi

# rest of your profile goes here

return пропустит оставшуюся часть сценария, если установлена переменная среды $SSH_CONNECTION , которая обычно создается при каждом запуске соединения SSH. В противном случае профиль будет работать как обычно.

Обратите внимание, что при этом будет пропущен только уязвимый скрипт профиля. Все остальные скрипты профиля (например, /etc/profile) будут по-прежнему обрабатываться, если вы не измените их аналогичным образом.

1

Кроме того, попробуйте использовать программу FTP, такую как WinSCP, чтобы удалить ошибочный файл входа в систему. Это отменит его, но, по крайней мере, вы сможете войти в оболочку по умолчанию

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .