Seperti yang dibahas dalam jawaban lain, saat klien SSH terhubung ke server OpenSSH, server OpenSSH umumnya akan memulai sesi shell atas nama klien, menggunakan shell login pengguna:
- Jika klien meminta sesi interaktif, server akan meluncurkan shell login pengguna.
- Jika klien meminta menjalankan perintah, server akan menggunakan shell login pengguna untuk menjalankan perintah sebagai perintah shell.
- Utilitas seperti
scp
,rsync
, dangit
yang menggunakan ssh untuk transportasi akan meminta perintah untuk dijalankan pada sistem jarak jauh, sehingga termasuk dalam #2.
Jika Anda memiliki sesuatu di file startup shell pengguna jarak jauh yang menyebabkan shell keluar, Anda akan kesulitan untuk masuk.
Namun SFTP adalah kasus khusus. Server OpenSSH mungkin dikonfigurasi untuk mendukung SFTP tanpa meluncurkan perintah eksternal. Jika itu masalahnya, maka Anda dapat menggunakan sftp untuk terhubung ke server dan menghapus, mengganti nama, atau mengubah .bashrc
file yang menyebabkan masalah.
Itu tergantung pada bagaimana server dikonfigurasi untuk mendukung sftp. Itu dapat melayani sesi sftp dengan meluncurkan program eksternal (bernama sftp-server
). Dalam hal ini Anda akan memiliki masalah yang sama dengan yang Anda miliki dengan program seperti scp
. Atau, server dapat melayani sesi sftp dengan sesuatu yang disebut "internal-sftp", yang tidak memerlukan pemanggilan shell. Itu hanya tergantung pada bagaimana server SSH tertentu dikonfigurasi.