2 votes

La connexion SSH se ferme car Shell ne parvient pas à se charger

J'ai FreeBSd qui fonctionne avec OpenSSH. J'ai tout configuré et la connexion via SSH a fonctionné parfaitement. Puis j'ai décidé de me débarrasser de certains ports non utilisés et j'ai évidemment désinstallé un port qui était utilisé par zsh.

Lorsque je me connecte, j'obtiens ce qui suit :

~ # 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.

Le problème est que je n'ai pas de moniteur ni de clavier (pour l'instant) pour résoudre le problème très rapidement...

J'ai essayé ceci pour forcer le chargement d'un autre Shell >. Force SSH à utiliser un Shell spécifique

Ne fonctionne pas comme je l'obtiens :

~ # 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"%    

Une idée pour résoudre ce problème sans clavier ni écran ?

3voto

EhevuTov Points 474

J'ai fait exactement la même erreur une fois. Je doute que vous puissiez obtenir l'accès root nécessaire pour modifier votre Shell à distance. Une autre option, moins probable, est de pirater votre propre boîte et d'obtenir les privilèges root.

J'ai dû me connecter localement via le clavier et le moniteur et passer au Shell par défaut. Ne jamais faire utiliser à root un Shell en userland. Laissez toujours root utiliser le Shell par défaut qui est livré avec le système. Si vous devez ou voulez utiliser un Shell différent, lancez-le manuellement après la connexion. C'est ce que je fais maintenant.

Et rappelez-vous, ne faites pas make delete-old-libs en /usr/src sauf si vous êtes absolument sûr de ne plus avoir besoin de ces librairies :-D

2voto

Michael McCloskey Points 1765

Si sftp fonctionne, j'essaierais de télécharger une ~/.ssh/rc avec les commandes que je dois exécuter (peut-être echo password | chsh -s /usr/local/bin/bash ?) et espérer que ssh comme l'indique sa page de manuel, exécute ces commandes avant de lancer le Shell de l'utilisateur.

1voto

Duell N. Points 11

Méthode 1

Essayez de suivre

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

Cela vous permettra de vous connecter avec sh au lieu de bash si vous réussissez.

Méthode 2

ssh dans la boîte avec un autre utilisateur et ensuite su/sudo pour regagner l'accès root.

1voto

bash y zsh ont tous deux une dépendance à l'égard de libiconv donc aucun des deux ne fonctionnera pour vous, puisque vous l'avez supprimé. Vous pouvez faire comme John l'a suggéré, et dire à ssh explicitement pour exécuter sh o csh qui sont tous deux dans le système de base et devraient donc fonctionner correctement, car ils n'ont aucune dépendance externe sur quoi que ce soit dans les ports.

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

Vous avez maintenant une Shell session, où vous pouvez installer libiconv à nouveau. Pour une référence future, il est utile d'utiliser quelque chose comme ports-mgmt/pkg_cutleaves pour supprimer les ports dont vous n'avez plus besoin - il est beaucoup plus difficile de se tirer une balle dans le pied comme ça !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X