Saya ingin menampilkan spanduk (pesan selamat datang) untuk pengguna SSH dengan pesan selamat datang khusus untuk setiap pengguna.
Saya ingin menampilkan spanduk (pesan selamat datang) untuk pengguna SSH dengan pesan selamat datang khusus untuk setiap pengguna.
Jawaban:
Anda tidak menentukan, server SSH apa yang Anda gunakan. Saya mengasumsikan OpenSSH.
Perhatikan bahwa spanduk SSH dan MOTD adalah dua hal yang berbeda.
Walaupun hampir tidak dapat dibedakan dalam terminal SSH, mereka memiliki perilaku yang berbeda, misalnya, dalam klien SFTP.
MOTD hanyalah teks yang dicetak pada terminal interaktif. Jadi, itu tidak akan (dan tidak bisa) dikirim ke klien SFTP, misalnya (lebih lanjut tentang itu nanti).
MOTD dikodekan dengan keras /etc/motd
pada OpenSSH. Anda dapat menyalakan / mematikannya hanya secara global, menggunakan PrintMotd
arahan.
Pada beberapa sistem Linux, PrintMotd
selalu mati dan MOTD dicetak oleh tumpukan PAM sebagai gantinya (menggunakan pam_motd
modul). Dalam hal ini, Anda dapat mematikannya melalui /etc/pam.d/sshd
atau menentukan motd=
jalur khusus sebagai parameter modul.
Spanduk SSH adalah fitur SSH 2.0 khusus, yang dikirim dalam paket SSH tertentu (SSH2_MSG_USERAUTH_BANNER).
Dengan demikian, bahkan klien non-terminal, seperti klien SFTP, dapat memprosesnya dan ditampilkan kepada pengguna. Lihat bagaimana spanduk ditampilkan di klien WinSCP SFTP / SCP .
Spanduk SSH dapat dikonfigurasi per pengguna (atau grup atau kriteria lainnya) dalam sshd_config
menggunakan Banner
dan Match
arahan :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Lihat juga Nonaktifkan ssh banner untuk pengguna atau ips tertentu .
Tentu saja, Anda juga dapat menggunakan implementasi khusus untuk pesan / spanduk. Cukup cetak pesan yang dipilih menggunakan logika khusus Anda dari skrip profil global.
Seperti halnya MOTD, ini tidak akan berfungsi untuk sesi non-interaktif (SFTP dan sejenisnya).
Lebih penting lagi, tidak hanya itu tidak akan berfungsi, Anda perlu memastikan bahwa Anda mencetak pesan hanya untuk terminal interaktif. Apa yang dilakukan OpenSSH secara otomatis untuk /etc/motd
. Baik menggunakan skrip profil global yang dijalankan hanya untuk terminal interaktif, atau cetak pesan secara kondisional berdasarkan nilai TERM
variabel lingkungan.
Jika Anda mencetak pesan untuk sesi non-interaktif, Anda memutuskan klien mana pun yang menggunakan protokol ketat, seperti SFTP atau SCP, karena klien akan mencoba menafsirkan pesan teks Anda sebagai pesan protokol, gagal parah.
Lihat misalnya deskripsi masalah seperti itu dalam dokumentasi klien WinSCP SFTP / SCP .
(Saya penulis WinSCP)
Anda dapat menggunakan "$HOME/.ssh/rc"
file juga untuk mengarsipkan apa yang ingin Anda lakukan
echo "echo Hello World" > /home/pluto/.ssh/rc
ssh pluto@localhost
Last login: Thu Dec 18 08:46:16 2014 from localhost.localdomain
Hello World
Jadi, Anda dapat memiliki satu ssh rc untuk setiap pengguna.
groups|awk '{print $1}'
cat /etc/motd.${PGROUP} sebelum menambahkan baris ini saya membuat file banner untuk setiap pengguna di bawah direktori / etc. dan file seperti motd.root dan motd.alex dan ini berfungsi untuk saya.