Comme indiqué dans l'autre réponse, lorsqu'un client SSH se connecte au serveur OpenSSH, le serveur OpenSSH démarre généralement une session shell au nom du client, en utilisant le shell de connexion de l'utilisateur :
- Si le client demande une session interactive, le serveur lancera le shell de connexion de l'utilisateur.
- Si le client demande l'exécution d'une commande, le serveur utilisera le shell de connexion de l'utilisateur pour exécuter la commande en tant que commande shell.
- Utilitaires tels que
scp
,rsync
, etgit
qui utilisent ssh pour le transport demanderont l'exécution d'une commande sur le système distant, ils relèvent donc du #2.
Si vous avez quelque chose dans les fichiers de démarrage du shell de l'utilisateur distant qui provoque la fermeture du shell, vous aurez du mal à y accéder.
SFTP est cependant un cas particulier. Le serveur OpenSSH peut être configuré pour prendre en charge SFTP sans lancer de commande externe. Si c'est le cas, alors vous pourrez utiliser sftp pour vous connecter au serveur et supprimer, renommer ou modifier le .bashrc
fichier à l'origine du problème.
Cela dépend de la façon dont le serveur est configuré pour prendre en charge sftp. Il peut gérer des sessions SFTP en lançant un programme externe (nommé sftp-server
). Dans ce cas, vous auriez le même problème d'accès qu'avec des programmes comme scp
. Ou, le serveur peut desservir la session sftp par quelque chose appelé "internal-sftp", qui ne nécessite pas l'appel d'un shell. Cela dépend simplement de la configuration du serveur SSH particulier.