Como se discutió en la otra respuesta, cuando un cliente SSH se conecta al servidor OpenSSH, el servidor OpenSSH generalmente iniciará una sesión de shell en nombre del cliente, utilizando el shell de inicio de sesión del usuario:
- Si el cliente solicita una sesión interactiva, el servidor iniciará el shell de inicio de sesión del usuario.
- Si el cliente solicita ejecutar un comando, el servidor usará el shell de inicio de sesión del usuario para ejecutar el comando como un comando de shell.
- Utilidades como
scp
,rsync
ygit
que usan ssh para el transporte solicitarán que se ejecute un comando en el sistema remoto, por lo que se ubican en el n.° 2.
Si tiene algo en los archivos de inicio del shell del usuario remoto que hace que el shell se cierre, entonces tendrá problemas para ingresar.
Sin embargo, SFTP es un caso especial. El servidor OpenSSH puede configurarse para admitir SFTP sin ejecutar un comando externo. Si ese es el caso, entonces podría usar sftp para conectarse al servidor y eliminar, cambiar el nombre o modificar el .bashrc
archivo que está causando el problema.
Depende de cómo esté configurado el servidor para admitir sftp. Puede dar servicio a sesiones sftp iniciando un programa externo (llamado sftp-server
). En este caso tendrías el mismo problema para entrar que con programas como scp
. O bien, el servidor puede atender la sesión de sftp mediante algo denominado "sftp interno", que no requiere invocar un shell. Solo depende de cómo esté configurado el servidor SSH en particular.