Jak je uvedeno v druhé odpovědi, když se klient SSH připojí k serveru OpenSSH, server OpenSSH obecně zahájí relaci shellu jménem klienta pomocí přihlašovacího shellu uživatele:
- Pokud klient požaduje interaktivní relaci, server spustí přihlašovací shell uživatele.
- Pokud klient požaduje spuštění příkazu, server použije přihlašovací prostředí uživatele ke spuštění příkazu jako příkazu prostředí.
- Nástroje jako
scp
,rsync
agit
které pro přenos používají ssh, budou vyžadovat spuštění příkazu na vzdáleném systému, takže spadají pod číslo 2.
Pokud máte ve spouštěcích souborech vzdáleného uživatele něco, co způsobí ukončení shellu, pak budete mít problém se dovnitř dostat.
SFTP je však zvláštní případ. Server OpenSSH může být nakonfigurován tak, aby podporoval SFTP bez spouštění externího příkazu. Pokud v takovém případě byste se mohli pomocí sftp připojit k serveru a odstranit, přejmenovat nebo změnit .bashrc
soubor, který způsobuje problém.
Záleží na tom, jak je server nakonfigurován pro podporu sftp. Může obsluhovat relace sftp spuštěním externího programu (s názvem sftp-server
). V tomto případě byste měli stejný problém se vstupem, jaký máte s programy jako scp
. Nebo může server obsluhovat relaci sftp něčím, co se nazývá „interní-sftp“, což nevyžaduje vyvolání shellu. Záleží jen na tom, jak je nakonfigurován konkrétní SSH server.