Her kullanıcı için belirli bir karşılama mesajı olan SSH kullanıcıları için banner (karşılama mesajı) görüntülemek istiyorum.
Her kullanıcı için belirli bir karşılama mesajı olan SSH kullanıcıları için banner (karşılama mesajı) görüntülemek istiyorum.
Yanıtlar:
Hangi SSH sunucusunu kullandığınızı belirtmediniz. OpenSSH olduğunu varsayıyorum.
SSH banner'ı ve MOTD'nin iki farklı şey olduğunu unutmayın.
Bir SSH terminalinde neredeyse ayırt edilemez olsa da, örneğin bir SFTP istemcisinde farklı bir davranışa sahiptirler.
MOTD sadece etkileşimli bir terminale basılmış bir metindir. Dolayısıyla, SFTP istemcilerine gönderilmez (ve gönderilemez), örneğin (daha sonra bununla ilgili daha fazla bilgi).
MOTD, /etc/motd
OpenSSH'ye sabit kodlanmıştır . PrintMotd
Direktifi kullanarak yalnızca global olarak açıp kapatabilirsiniz .
Bununla birlikte, bazı Linux sistemlerinde PrintMotd
her zaman kapalıdır ve MOTD bunun yerine PAM yığını tarafından yazdırılır ( pam_motd
modülü kullanarak ). Bu durumda, bunu modül parametresi olarak kapatabilir /etc/pam.d/sshd
veya özel bir motd=
yol belirtebilirsiniz .
SSH başlığı, belirli bir SSH paketinde (SSH2_MSG_USERAUTH_BANNER) gönderilen özel bir SSH 2.0 özelliğidir.
Bu nedenle, SFTP istemcileri gibi terminal olmayan istemciler bile bunu işleyebilir ve kullanıcıya görüntüleyebilir. Örneğin , başlığın WinSCP SFTP / SCP istemcisinde nasıl görüntülendiğine bakın .
SSH şerit kullanıcının (ya da bir grup ya da diğer kriterler) göz başına yapılandırılabilir sshd_config
kullanılarak Banner
ve Match
direktifler :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Ayrıca bkz . Belirli kullanıcılar veya ips için ssh banner'ını devre dışı bırakma .
Elbette, mesaj / banner için özel bir uygulama da kullanabilirsiniz. Genel profil komut dosyasından özel mantığınız kullanılarak seçilen bir iletiyi yazdırmanız yeterlidir.
MOTD'de olduğu gibi, bu etkileşimli olmayan oturumlarda (SFTP ve benzeri) işe yaramaz.
Daha da önemlisi, sadece çalışmaz, aynı zamanda mesajı yalnızca etkileşimli bir terminal için yazdırdığınızdan emin olmanız gerekir . OpenSSH için otomatik olarak ne yapar /etc/motd
. Yalnızca etkileşimli bir terminal için çalışan bir genel profil komut dosyası kullanın veya iletiyi TERM
ortam değişkeninin değerine göre koşullu olarak yazdırın .
İletiyi etkileşimli olmayan oturum için yazdırırsanız, SFTP veya SCP gibi katı bir protokol kullanan herhangi bir istemciyi kırırsınız, çünkü istemci kısa iletinizi bir protokol iletisi olarak yorumlamaya çalışır ve başarısız olur.
WinSCP SFTP / SCP istemcisinin belgelerindeki bu sorunun açıklamasına bakınız .
(WinSCP'nin yazarıyım)
Yapmak "$HOME/.ssh/rc"
istediğiniz şeyi arşivlemek için de dosya kullanabilirsiniz
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
Yani, her kullanıcı için bir ssh rc olabilir.
groups|awk '{print $1}'
cat /etc/motd.${PGROUP} Bu satırı eklemeden önce / etc dizini altındaki her kullanıcı için banner dosyası oluşturuyorum. ve motd.root ve motd.alex gibi dosya ve bu benim için çalışıyor.