SSH sans invoquer la coquille

J'ai réussi à gâcher des bibliothèques partagées sur mon système, et maintenant mon shell ne peut pas être exécuté, ce qui me verrouille hors du système. Les deux ssh , sftp et scp , tel que configuré sur le système distant, semblent s'appuyer sur le shell, donc ces alternatives sont éliminées. Vraiment, ce n'est pas un gros problème parce que j'ai des mains éloignées qui peuvent changer mon shell en passant par la console.

Cependant, je suis curieux de me référer à la mécanique du protocole SSH, qu'il soit possible d'authentifier et d'effectuer certaines manipulations sur le système distant (p. Ex., En modifiant /etc/passwd ), sans jamais invoquer le shell?

MODIFIER

Juste pour être juste, à l'autre qui a suggéré de spécifier la command / shell alternative après la string de command ssh (par exemple, ssh myhost /bin/sh ): la page man indique:

 If command is specified, it is executed on the remote host instead of a login shell. 

ce qui pourrait certainement être source de confusion.

[pour memory seulement – au moment de l'écriture, le problème a longtime été réglé, j'espère que]

Avec openssh , TOUTE command exécutée par sshd est exécutée via votre shell de connection avec l'option -c :

  • command passée dans la command line ssh (c.-à-d. command ssh user@host command )
  • command configurée dans le file .authorized_keys (c.-à-d. command="..." ssh-rsa AAAA... )
  • command spécifiée par l'option sshd_config dans sshd_config
  • l'exécution du script ~/.ssh/rc (via /bin/sh ~/.ssh/rc )
  • même les commands de scp locales à un server exécutées en réponse à un scp distance

Donc, si votre shell de connection est faussé ( /bin/false ou nologin ) ou cassé, il n'y a aucun moyen d'exécuter quelque chose à distance avec ssh . C'est aussi pourquoi aucune autre shell n'est possible.

Il est toujours possible de réparer les choses avec sftp .