Perusahaan saya memiliki persyaratan bahwa saya harus menjalankan satu aplikasi server, yang dapat diakses oleh semua pengguna melalui terminal dempul. Saya ingin menulis skrip shell yang hanya boleh dibuka 20 terminal dempul. Jika terminal 21 terbuka maka saya ingin segera menutup terminal itu.
Bagaimana saya bisa mencapai ini?
Tolong bantu aku.
command-line
bash
scripts
vijay12289
sumber
sumber
MaxSessions
lapangan/etc/sshd_config
, atau ini bug Ubuntu?Jawaban:
Edit Anda
/etc/sshd_config
di sisi server dan ubah jalur:untuk
Lihat
man sshd_config
:sumber
MaxSessions 20
. Sesi yang disebutkan ada tentang hal-hal seperti penerusan port (dan bahkan memiliki lebih dari satu shell terbuka) menggunakan koneksi yang sama, bukan tentang jumlah login pada sistem.Solusi George berfungsi dengan baik namun Anda meminta skrip bash ...
Jadi mempertimbangkan satu ini untuk situasi lain ketika tidak ada pilihan seperti
MaxSessions
darisshd
, maka Anda dapat menggunakan sesuatu seperti ini:Yang
pkill -n
akan membunuh instance terbaru dariprocessName
.Solusi yang tepat untuk situasi khusus ini adalah jawaban George.
sumber
Aku sudah memutuskan untuk menguraikan dan menguji Ravexina 's ide . Ini berfungsi dan efektif jika Anda ingin membatasi jumlah koneksi ssh yang ada.
Pertama saya menemukan ketika daemon ssh sedang berjalan tanpa koneksi ada satu
sshd
proses. Untuk setiap koneksi baru duasshd
proses baru dibuat. Jadi, jika Anda ingin batas 20 koneksi, ambang batasnya harus 41 (1 + 2x20), bukan 20.Lalu saya membuat file yang dapat dieksekusi, bernama , yang terlihat seperti berikut:
/usr/local/bin/limit-sshd
Akhirnya saya menambahkan arahan berikut ke
/etc/ssh/sshd_config
:$SHELL
akan mengeksekusi shell pengguna default.sudo systemctl restart sshd.service
Inilah cara kerjanya ( klik pada gambar untuk melihat demo animasi ):
Selanjutnya, saya menyadari bahwa kita tidak perlu membunuh apa pun, jika kita memodifikasi skrip dengan cara ini:
Dan masing-masing
/etc/ssh/sshd_config
dengan cara ini:sumber
Pertanyaannya tidak jelas. Biarkan saya katakan dulu bagaimana saya memahaminya dan di mana, IMO, itu harus ditanyakan:
Jika interpretasi itu benar, mungkin cara yang benar untuk memenuhi persyaratan adalah dengan membuat grup pengguna , lalu menambahkan semua akun pengguna ke grup itu dan membatasi jumlah maxlogin via
/etc/security/limits.conf
.Buat grup, misalnya dipanggil
the-app-maxlogins
, dengan id grup10 000
:Tambahkan pengguna ke grup itu -
sudo adduser <user> <group>
:Tambahkan baris berikutnya
/etc/security/limits.conf
untuk membatasi jumlah maksimum seluruh grup :Atau tambahkan baris berikut untuk membatasi jumlah login maksimum per pengguna grup :
Edit
/etc/ssh/sshd_config
dan tambahkan baris berikut ke bawah (!) File untuk menonaktifkan sesi multiplexing untuk grup itu (mungkin ini tidak wajib dalam kasus itu):Solusi ini akan membatasi jumlah login dari pengguna yang terpengaruh tidak masalah melalui ssh atau tty. Jika Anda ingin menerapkannya untuk pengguna tertentu bukan untuk grup, cukup tambahkan baris sebagai tindak lanjut
limits.conf
atau letakkan di.conf
file terpisah di dalam direktori/etc/security/limits.d/
:Penjelasan sederhana tentang arti sebenarnya dari arahan
MaxSessions
disediakan dalam jawaban ini . Sumber utama jawaban saat ini adalah jawaban lain di bawah pertanyaan L&U yang sama.The jawaban lain dari saya, bisa memberikan solusi dalam beberapa cara, tetapi itu adalah jenis menyenangkan daripada solusi yang benar.
sumber