ฉันต้องการแสดงแบนเนอร์ (ข้อความต้อนรับ) สำหรับผู้ใช้ SSH ที่มีข้อความต้อนรับเฉพาะสำหรับผู้ใช้แต่ละคน
ฉันต้องการแสดงแบนเนอร์ (ข้อความต้อนรับ) สำหรับผู้ใช้ SSH ที่มีข้อความต้อนรับเฉพาะสำหรับผู้ใช้แต่ละคน
คำตอบ:
คุณไม่ได้ระบุสิ่งที่คุณใช้เซิร์ฟเวอร์ SSH ฉันสมมติว่า OpenSSH
โปรดทราบว่าแบนเนอร์ SSH และ MOTD เป็นสองสิ่งที่แตกต่างกัน
ในขณะที่เกือบจะแยกไม่ออกในเทอร์มินัล SSH พวกเขามีพฤติกรรมที่แตกต่างเช่นในไคลเอนต์ SFTP
MOTD เป็นเพียงข้อความที่พิมพ์บนเทอร์มินัลแบบโต้ตอบ ดังนั้นมันจะไม่ (และไม่สามารถ) ถูกส่งไปยังไคลเอนต์ SFTP เช่น (เพิ่มเติมเกี่ยวกับเรื่องนั้นในภายหลัง)
MOTD นั้นได้รับการเข้ารหัสไว้อย่างหนัก/etc/motd
ใน OpenSSH คุณสามารถเปิด / ปิดได้ทั่วโลกเท่านั้นโดยใช้PrintMotd
คำสั่ง
อย่างไรก็ตามในบางระบบ Linux PrintMotd
นั้นจะปิดอยู่เสมอและ MOTD จะถูกพิมพ์โดย PAM stack แทน (ใช้pam_motd
โมดูล) ในกรณีนี้คุณสามารถปิดได้ผ่านทาง/etc/pam.d/sshd
หรือระบุmotd=
เส้นทางที่กำหนดเองเป็นพารามิเตอร์โมดูล
แบนเนอร์ SSH เป็นคุณสมบัติพิเศษ SSH 2.0 ส่งในแพ็คเก็ต SSH เฉพาะ (SSH2_MSG_USERAUTH_BANNER)
ดังนั้นแม้แต่ไคลเอ็นต์ที่ไม่ใช่เทอร์มินัลเช่นไคลเอนต์ SFTP สามารถประมวลผลและแสดงต่อผู้ใช้ ดูว่าแบนเนอร์แสดงในไคลเอนต์ WinSCP SFTP / SCPได้อย่างไร
แบนเนอร์ SSH สามารถกำหนดค่าได้ต่อผู้ใช้ (หรือกลุ่มหรือเกณฑ์อื่น ๆ ) ในการsshd_config
ใช้Banner
และMatch
คำสั่ง :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
ดูเพิ่มเติมที่ปิดใช้งานแบนเนอร์ ssh สำหรับผู้ใช้หรือ ipsเฉพาะ
แน่นอนคุณยังสามารถใช้การใช้งานที่กำหนดเองสำหรับข้อความ / แบนเนอร์ เพียงพิมพ์ข้อความที่เลือกโดยใช้ตรรกะที่คุณกำหนดเองจากสคริปต์โปรไฟล์ส่วนกลาง
เช่นเดียวกับ MOTD สิ่งนี้จะไม่ทำงานสำหรับเซสชันที่ไม่มีการโต้ตอบ (SFTP และอื่น ๆ )
ที่สำคัญไม่เพียง แต่จะไม่ทำงานเท่านั้นคุณต้องตรวจสอบให้แน่ใจว่าคุณพิมพ์ข้อความสำหรับเทอร์มินัลเชิงโต้ตอบเท่านั้น อะไร OpenSSH /etc/motd
ไม่โดยอัตโนมัติ ใช้สคริปต์ส่วนกลางโปรไฟล์ที่ดำเนินการสำหรับเทอร์มินัลเชิงโต้ตอบเท่านั้นหรือพิมพ์ข้อความตามเงื่อนไขโดยขึ้นอยู่กับค่าของTERM
ตัวแปรสภาพแวดล้อม
ถ้าคุณพิมพ์ข้อความสำหรับเซสชันที่ไม่มีการโต้ตอบคุณทำลายไคลเอนต์ใด ๆ ที่ใช้โปรโตคอลที่เข้มงวดเช่น SFTP หรือ SCP เนื่องจากไคลเอ็นต์จะพยายามตีความข้อความของคุณว่าเป็นข้อความโปรโตคอลล้มเหลวอย่างรุนแรง
ดูตัวอย่างรายละเอียดของปัญหาดังกล่าวในเอกสารของลูกค้า WinSCP SFTP / SCP
(ฉันเป็นผู้เขียน WinSCP)
คุณสามารถใช้"$HOME/.ssh/rc"
ไฟล์ได้เช่นกันเพื่อเก็บถาวรสิ่งที่คุณต้องการทำ
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
ดังนั้นคุณสามารถมีหนึ่ง ssh rc สำหรับผู้ใช้ทุกคน
groups|awk '{print $1}'
cat /etc/motd.${PGROUP} ก่อนที่จะเพิ่มบรรทัดนี้ฉันสร้างไฟล์แบนเนอร์สำหรับผู้ใช้แต่ละคนภายใต้ไดเรกทอรี / etc และไฟล์เช่น motd.root และ motd.alex และงานนี้สำหรับฉัน