Apakah ada cara untuk memotong atau mencegah eksekusi ~/.profile
ketika masuk ke server Linux jarak jauh menggunakan ssh atau dempul?
Apakah ada cara untuk memotong atau mencegah eksekusi ~/.profile
ketika masuk ke server Linux jarak jauh menggunakan ssh atau dempul?
Jawaban:
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:
$ 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 ls
untuk memastikan itu berfungsi.
Jika mesin target Anda dalam bash shell:
user@host:/$ ssh hostname "bash --noprofile"
Atau, jika ada profil lain yang ingin Anda gunakan
user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
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 --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:
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 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.