Я поместил "exit" в свой файл .bashrc. У меня нет физического доступа к машине, поэтому для подключения к ней я использую ssh. У меня нет привилегий root. Каждый раз, когда я подключаюсь к серверу, соединение автоматически закрывается.
Пока что пробовал:
Могу ли я что-нибудь сделать, чтобы отключить .bashrc или, возможно, перезаписать файл до того, как будет получен .bashrc?
ОБНОВИТЬ
@ ring0
Я попробовал ваше предложение, но не повезло. Файл bashrc по-прежнему запускается первым.
Еще я попробовал войти в систему с другой учетной записью и отредактировать sudo .bashrc, но у меня нет прав sudo для этой учетной записи.
Думаю свяжусь с админом.
РЕДАКТИРОВАТЬ
@shellholic
Не могу поверить, но этот подход сработал! Хотя «выход» происходит в первых нескольких строках (состоящих только из нескольких если блоки и экспорт операторов) в файле .bashrc, мне все же удалось успешно прервать его с помощью Ctrl-c в течение двадцати попыток (заняло около 3 минут). Я удалил оскорбительную строку в .bashrc, и все снова в рабочем состоянии.
вы можете попытаться прервать (ctrl + C) перед выходом части вашего .bashrc
выполняется.
Я попытался добавить следующее в верхней части bashrc тестового пользователя, это работает, это просто вопрос времени. В моем случае очень просто:
sleep 3
echo "Too late... bye"
exit 0
Мне также удалось испортить мой .bashrc файл на новом кластере, к которому мне предоставили пробный доступ. Не желая казаться новичком, последнее, что я хотел сделать, это попросить помощи у администраторов, и я не мог вовремя заставить ^ + C работать.
Что действительно сработало, так это отправить команду 'rm' в качестве последнего аргумента для ssh. т.е.
ssh -tv user@host rm .bashrc
Мне не удалось заставить работать команду 'mv' (раньше пробовал без -t), поэтому я думаю, что опция -t должна была сделать это, но вы можете проверить это, если хотите. Теперь я восстановил из файла .bashrc ~ (созданного vim) все, кроме рассматриваемой хитрой строки, и все в мире в порядке! = D
Если вы можете войти в систему как другой пользователь, попробуйте следующее:
su user -s /bin/sh
Конечно, вам понадобится ваш пароль.
Если я вспомню какой-то плохой опыт, который у меня был, похоже, что ssh, scp, sftp запускают файлы инициализации.
Я предлагаю использовать простой FTP, а затем удалить или переименовать файл bad file в командной строке FTP после входа в систему. Я предполагаю, что ваша система разрешит вам доступ по FTP. В таком случае обязательно смените пароль (надежно) после завершения ремонта.
Из man ssh
(для OpenSSH_5.6p1
по крайней мере, не уверен, когда он был добавлен),
~/.ssh/rc
Commands in this file are executed by ssh when the user logs in, just
before the user's shell (or command) is started. See the sshd(8) manual
page for more information.
..то означает, что вы можете создавать ~/.ssh/rc
содержащий следующее:
mv ~/.bashrc ~/bak.bashrc
Тогда, когда ты ssh
in, проблемный bashrc будет перемещен, прежде чем ваша оболочка входа будет запущена - тогда вы, очевидно, можете исправить bak.bashrc
и переместите его на место
Подключитесь через SCP или SFTP и отредактируйте / переименуйте / удалите файл .bashrc таким образом. Edit - D'oh, я вижу, вы сказали, что пробовали это. Ну что ж.
У меня была такая же проблема, и я каким-то образом ее решил. Я использовал ssh для доступа к системе и нажимал и удерживал Ctrl + c, как только вошел в систему. Затем ~ / .bashrc не был прочитан, и я смог его изменить.
Если вы используете Homestead Vagrant ...
Вот как я выбрался из этого рассола.
(Использование Git Bash в Windows 10)
cd ../Homestead/
mv ~/.ssh/known_hosts ~/.ssh/known_hosts_OLD
ssh vagrant@127.0.0.1 -p 2222 mv ./.bashrc ./.bashrc_OLD
Примечание: пароль по умолчанию - "бродяга".
Эти статьи мне помогли:
Несколько предложений, которые сработали для меня от эта ветка Reddit:
ssh you@the.box /bin/bash --noprofile --norc
ssh -t jacksgt@example.com vi ./.bashrc
init=/bin/bash
в конце строки, 1. Enter, чтобы вернуться, б Загружать,vim /root/.bashrc
и отредактируйте соответственно.выйдите, и теперь вы сможете войти в систему