Назад | Перейти на главную страницу

Соединение SSH закрывается, поскольку оболочка не загружается

У меня FreeBSd работает с OpenSSH. Я все настроил и соединение по SSH работало отлично. Затем я решил избавиться от некоторых неиспользуемых портов и, очевидно, удалил тот, который использовался zsh.

Когда я вхожу в систему, я получаю следующее:

~ # ssh cristian@192.168.1.56
Password:
Last login: Wed Nov  7 21:56:26 2012 from 192.168.1.52
FreeBSD 9.0-RELEASE (GENERIC) #0: Tue Jan  3 07:15:25 UTC 2012

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories and updated errata information for all releases are
   at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
   for your release first as it's updated frequently.

o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
   along with the mailing lists, can be searched by going to
   http://www.FreeBSD.org/search/.  If the doc package has been installed
   (or fetched via pkg_add -r lang-freebsd-doc, where lang is the
   2-letter language code, e.g. en), they are also available formatted
   in /usr/local/share/doc/freebsd.

If you still have a question or problem, please take the output of
`uname -a', along with any relevant error messages, and email it
as a question to the questions@FreeBSD.org mailing list.  If you are
unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
manual page.  If you are not familiar with manual pages, type `man man'.

Edit /etc/motd to change this login announcement.

Shared object "libiconv.so.3" not found, required by "zsh"Connection to 192.168.1.56 closed.

Дело в том, что у меня нет ни монитора, ни клавиатуры (прямо сейчас), чтобы решить проблему очень быстро ...

Я пробовал это, чтобы принудительно загрузить другую оболочку> Заставить SSH использовать определенную оболочку

Не работает как я получаю:

~ # ssh cristian@192.168.1.56 /usr/local/bin/sh << EOF
chsh -s /usr/local/bin/bash
EOF
Password:
Shared object "libiconv.so.3" not found, required by "zsh"%    

Есть идеи, как решить эту проблему без клавиатуры и монитора?

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

Мне пришлось подключиться локально через клавиатуру и монитор и перейти на оболочку по умолчанию. Никогда не заставляйте root использовать пользовательскую оболочку. Всегда позволяйте root использовать оболочку по умолчанию, которая поставляется с системой. Если вам нужна или вы хотите использовать другую оболочку, запустите ее вручную после входа в систему. Вот чем я сейчас занимаюсь.

И помни, не делай make delete-old-libs в /usr/src если вы точно не знаете, что эти библиотеки вам больше не понадобятся :-D

Если sftp работает, я бы попытался загрузить ~/.ssh/rc файл с командами, которые мне нужно запустить (возможно, echo password | chsh -s /usr/local/bin/bash?) и надеюсь, что ssh, как указано на странице руководства, выполняет эти команды перед запуском оболочки пользователя.

bash и zsh оба имеют зависимость от libiconv, поэтому ни один из них не будет работать для вас, поскольку вы его удалили. Вы можете сделать, как предложил Джон, и сказать ssh явно бежать sh или csh, которые находятся в базовой системе и, следовательно, должны работать правильно, поскольку не имеют внешней зависимости ни от чего в портах.

ssh me@there "/bin/sh -i"

Теперь у вас есть сеанс оболочки, в котором вы можете установить libiconv очередной раз. Для справки в будущем стоит использовать что-то вроде ports-mgmt/pkg_cutleaves чтобы удалить порты, которые вам больше не нужны - так сильно сложнее прострелить себе ногу!

Способ 1

Попробуйте следовать

    ssh username@hostname "/bin/sh -i"

Это позволит вам войти в систему с помощью sh вместо bash в случае успеха.

Способ 2

ssh в ящик с другим пользователем, а затем su / sudo, чтобы восстановить root-доступ.