У меня 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-доступ.