ssh -t hostname "bash --noprofile". Если -t там не было, я получаю сообщение об ошибке "standard in должно быть tty".
нитины
14
Если вы хотите отключить все сценарии входа в систему, вы можете использовать --noprofileфлаг, чтобы отключить /etc/profile, ~/.profileи т. Д. И --norcотключить ~/.bashrcследующим образом:
$ ssh 127.0.0.1"bash --noprofile --norc"
Имейте в виду, что вы также можете запустить альтернативную оболочку, если она доступна. Я должен был использовать это после того, как возиться chsh:
$ ssh 127.0.0.1 sh
Это, скорее всего, приведет вас к пустой оболочке (без подсказки), поэтому дайте ей lsубедиться, что она работает.
Кроме того, попробуйте использовать программу FTP, такую как WinSCP, чтобы удалить ошибочный файл входа в систему. Это отменит его, но, по крайней мере, вы сможете войти в оболочку по умолчанию
Как уже упоминали другие, запуск bash с --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будут по-прежнему обрабатываться, если вы не измените их аналогичным образом.
Ответы:
Для Баш:
источник
-t
опция, я думаю.Если вы хотите отключить все сценарии входа в систему, вы можете использовать
--noprofile
флаг, чтобы отключить/etc/profile
,~/.profile
и т. Д. И--norc
отключить~/.bashrc
следующим образом:Имейте в виду, что вы также можете запустить альтернативную оболочку, если она доступна. Я должен был использовать это после того, как возиться
chsh
:Это, скорее всего, приведет вас к пустой оболочке (без подсказки), поэтому дайте ей
ls
убедиться, что она работает.источник
Если ваша целевая машина находится в оболочке bash:
Или, если есть другой профиль, который вы хотите использовать
источник
Кроме того, попробуйте использовать программу FTP, такую как WinSCP, чтобы удалить ошибочный файл входа в систему. Это отменит его, но, по крайней мере, вы сможете войти в оболочку по умолчанию
источник
Как уже упоминали другие, запуск bash с
--noprofile
флагом при запуске соединения будет работать, хотя, если вы используете другую оболочку, это может или не может быть вариантом.Одной из альтернатив может быть сценарий профиля, который обнаружит само соединение SSH и будет вести себя соответствующим образом. Поскольку соединения SSH обычно устанавливают несколько переменных среды, это легко проверить. Достаточно добавить что-то вроде следующих строк в начало вашего профиля:
Он
return
пропустит оставшуюся часть сценария, если установлена$SSH_CONNECTION
переменная окружения, которая обычно создается при каждом запуске SSH-соединения. В противном случае профиль будет работать как обычно.Обратите внимание, что при этом будет пропущен только уязвимый скрипт профиля. Все остальные скрипты профиля (например:)
/etc/profile
будут по-прежнему обрабатываться, если вы не измените их аналогичным образом.источник