Tôi muốn hiển thị biểu ngữ (thông báo chào mừng) cho người dùng SSH với thông điệp chào mừng cụ thể cho từng người dùng.
Tôi muốn hiển thị biểu ngữ (thông báo chào mừng) cho người dùng SSH với thông điệp chào mừng cụ thể cho từng người dùng.
Câu trả lời:
Bạn không chỉ định, bạn đang sử dụng máy chủ SSH nào. Tôi đang giả sử OpenSSH.
Lưu ý rằng biểu ngữ SSH và MOTD là hai thứ khác nhau.
Mặc dù gần như không thể phân biệt được trong một thiết bị đầu cuối SSH, nhưng chúng có một hành vi khác, ví dụ, trong một máy khách SFTP.
Bộ GTVT chỉ là một văn bản được in trên một thiết bị đầu cuối tương tác. Vì vậy, nó sẽ không (và không thể) được gửi đến các máy khách SFTP, ví dụ (sẽ nói thêm về điều đó sau).
Bộ GTVT được mã hóa cứng /etc/motd
trong OpenSSH. Bạn chỉ có thể bật / tắt toàn cầu bằng cách sử dụng lệnh PrintMotd
.
Tuy nhiên, trên một số hệ thống Linux, PrintMotd
luôn tắt và MOTD được in bằng ngăn xếp PAM (sử dụng pam_motd
mô-đun). Trong trường hợp này, bạn có thể tắt nó thông qua /etc/pam.d/sshd
hoặc chỉ định motd=
đường dẫn tùy chỉnh làm tham số mô-đun.
Biểu ngữ SSH là một tính năng SSH 2.0 đặc biệt, được gửi trong một gói SSH cụ thể (SSH2_MSG_USERAUTH_BANNER).
Như vậy, ngay cả các máy khách không đầu cuối, như máy khách SFTP, có thể xử lý nó và hiển thị cho người dùng. Xem cách biểu ngữ hiển thị trong ứng dụng khách WinSCP SFTP / SCP chẳng hạn.
Biểu ngữ SSH có thể định cấu hình cho mỗi người dùng (hoặc nhóm hoặc tiêu chí khác) trong việc sshd_config
sử dụng Banner
và các Match
chỉ thị :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Xem thêm Vô hiệu hóa biểu ngữ ssh cho người dùng hoặc ips cụ thể .
Tất nhiên, bạn cũng có thể sử dụng triển khai tùy chỉnh cho tin nhắn / biểu ngữ. Chỉ cần in một tin nhắn được chọn bằng logic tùy chỉnh của bạn từ tập lệnh hồ sơ toàn cầu.
Như với Bộ GTVT, điều này sẽ không hoạt động đối với các phiên không tương tác (SFTP và tương tự).
Quan trọng hơn, không chỉ nó sẽ không hoạt động, bạn cần đảm bảo rằng bạn chỉ in thông báo cho một thiết bị đầu cuối tương tác. Những gì OpenSSH tự động làm cho /etc/motd
. Hoặc sử dụng tập lệnh hồ sơ toàn cầu chỉ thực hiện cho một thiết bị đầu cuối tương tác hoặc in thông báo có điều kiện dựa trên giá trị của TERM
biến môi trường.
Nếu bạn in thông báo cho phiên không tương tác, bạn sẽ phá vỡ bất kỳ ứng dụng khách nào sử dụng giao thức nghiêm ngặt, chẳng hạn như SFTP hoặc SCP, vì máy khách sẽ cố gắng diễn giải tin nhắn văn bản của bạn dưới dạng tin nhắn giao thức, không thành công.
Xem ví dụ mô tả về vấn đề như vậy trong tài liệu của khách hàng WinSCP SFTP / SCP .
(Tôi là tác giả của WinSCP)
Bạn cũng có thể sử dụng "$HOME/.ssh/rc"
tệp để lưu trữ những gì bạn muốn làm
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
Vì vậy, bạn có thể có một ssh RC cho mọi người dùng.
groups|awk '{print $1}'
cat /etc/motd.$ nbPGROUP} trước khi thêm dòng này tôi tạo tệp biểu ngữ cho mỗi người dùng trong thư mục / etc. và tập tin như motd.root và motd.alex và công việc này cho tôi.