ssh -t hostname "bash --noprofile". Jika -t tidak ada saya mendapatkan kesalahan "standar harus tty".
nitin
14
Jika Anda mencari untuk menonaktifkan semua skrip login, Anda dapat menggunakan --noprofilebendera untuk menonaktifkan /etc/profile, ~/.profile, dll dan --norcuntuk menonaktifkan ~/.bashrcseperti:
$ ssh 127.0.0.1"bash --noprofile --norc"
Ingatlah bahwa Anda juga dapat meluncurkan shell alternatif jika tersedia. Saya harus menggunakan ini setelah mengacaukan chsh:
$ ssh 127.0.0.1 sh
Ini kemungkinan besar akan menjatuhkan Anda ke shell kosong (tidak ada prompt) jadi berikan itu lsuntuk memastikan itu berfungsi.
Juga, coba gunakan program FTP seperti WinSCP untuk menghapus file login yang salah. Ini akan membuangnya, tetapi setidaknya Anda harus bisa masuk ke shell default
Seperti yang disebutkan orang lain, menjalankan bash dengan --noprofilebendera ketika Anda memulai koneksi akan berfungsi, meskipun jika Anda menggunakan shell yang berbeda ini mungkin atau mungkin bukan opsi.
Salah satu alternatif adalah memiliki skrip profil mendeteksi koneksi SSH itu sendiri dan berperilaku sesuai. Karena koneksi SSH biasanya akan menetapkan sejumlah variabel lingkungan, ini dapat dengan mudah diperiksa. Menambahkan sesuatu seperti baris berikut ke awal profil Anda sudah cukup:
if [ "$SSH_CONNECTION" != "" ]; then
echo Logging in with ssh
return
else
echo Logging in with something that is not ssh
fi
# rest of your profile goes here
The returnakan melewatkan sisa naskah jika $SSH_CONNECTIONvariabel lingkungan diatur, yang biasanya akan dibuat setiap kali koneksi SSH dimulai. Kalau tidak, profil akan dijalankan seperti biasa.
Perhatikan bahwa ini hanya akan melewati skrip profil yang terpengaruh. Semua skrip profil lainnya (mis . /etc/profile:) masih akan diproses kecuali Anda memodifikasinya dengan cara yang sama.
Jawaban:
Untuk bash:
sumber
-t
opsi, saya pikir.Jika Anda mencari untuk menonaktifkan semua skrip login, Anda dapat menggunakan
--noprofile
bendera untuk menonaktifkan/etc/profile
,~/.profile
, dll dan--norc
untuk menonaktifkan~/.bashrc
seperti:Ingatlah bahwa Anda juga dapat meluncurkan shell alternatif jika tersedia. Saya harus menggunakan ini setelah mengacaukan
chsh
:Ini kemungkinan besar akan menjatuhkan Anda ke shell kosong (tidak ada prompt) jadi berikan itu
ls
untuk memastikan itu berfungsi.sumber
Jika mesin target Anda dalam bash shell:
Atau, jika ada profil lain yang ingin Anda gunakan
sumber
Juga, coba gunakan program FTP seperti WinSCP untuk menghapus file login yang salah. Ini akan membuangnya, tetapi setidaknya Anda harus bisa masuk ke shell default
sumber
Seperti yang disebutkan orang lain, menjalankan bash dengan
--noprofile
bendera ketika Anda memulai koneksi akan berfungsi, meskipun jika Anda menggunakan shell yang berbeda ini mungkin atau mungkin bukan opsi.Salah satu alternatif adalah memiliki skrip profil mendeteksi koneksi SSH itu sendiri dan berperilaku sesuai. Karena koneksi SSH biasanya akan menetapkan sejumlah variabel lingkungan, ini dapat dengan mudah diperiksa. Menambahkan sesuatu seperti baris berikut ke awal profil Anda sudah cukup:
The
return
akan melewatkan sisa naskah jika$SSH_CONNECTION
variabel lingkungan diatur, yang biasanya akan dibuat setiap kali koneksi SSH dimulai. Kalau tidak, profil akan dijalankan seperti biasa.Perhatikan bahwa ini hanya akan melewati skrip profil yang terpengaruh. Semua skrip profil lainnya (mis .
/etc/profile
:) masih akan diproses kecuali Anda memodifikasinya dengan cara yang sama.sumber