Kullanıcı başına SSH MOTD


17

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:


38

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/motdOpenSSH'ye sabit kodlanmıştır . PrintMotdDirektifi kullanarak yalnızca global olarak açıp kapatabilirsiniz .

Bununla birlikte, bazı Linux sistemlerinde PrintMotdher zaman kapalıdır ve MOTD bunun yerine PAM yığını tarafından yazdırılır ( pam_motdmodülü kullanarak ). Bu durumda, bunu modül parametresi olarak kapatabilir /etc/pam.d/sshdveya ö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_configkullanılarak Bannerve Matchdirektifler :

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 TERMortam 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)


Merhaba tüm cevap için teşekkürler, ben yanlış varsa lütfen beni düzelt çözüm var. Bu satırları / etc / profile dosyasına ekliyorum. PGROUP = 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.
user260277

Bunu da yapmalı. Cevabım dışında, bu sadece etkileşimli bir terminalde çalışır. SFTP ve benzeri için çalışmaz.
Martin Prikryl

interaktif terminal araçları?
user260277

Bir insanın etkileşime girdiği bir terminal (SFTP oturumu, SCP oturumu veya bazı toplu
işlerin

Banner'ın özel uygulamasıyla ilgili bazı zorlayıcı ayrıntılar ekledim.
Martin Prikryl

9

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.


merhaba, bunu denemek ama hata mesajı verir .ssh / rc: 1: .ssh / rc: welcom: bulunamadı.
user260277

benim hatamdı, bir yazım hatası yaptım, normal bash betiğinde olduğu gibi
yankıya

"Wolrd" da bir yazım hatasıdır :)
simon

"Stty: standart girdi: Cihaz için uygunsuz ioctl" alıyorum.
sonraki duyuruya kadar duraklatıldı.

.ssh / rc içinde ne var?
c4f4t0r
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.