SSH MOTD cho mỗi người dùng


17

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:


38

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/motdtrong 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, PrintMotdluôn tắt và MOTD được in bằng ngăn xếp PAM (sử dụng pam_motdmô-đun). Trong trường hợp này, bạn có thể tắt nó thông qua /etc/pam.d/sshdhoặ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_configsử dụng Bannervà các Matchchỉ 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 TERMbiế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)


Hi tất cả cảm ơn đã trả lời, tôi đã nhận được giải pháp xin vui lòng sửa cho tôi nếu tôi sai. Tôi nối các dòng này vào tập tin / etc / profile. PGROUP = 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.
dùng260277

Điều đó cũng nên làm. Ngoại trừ theo câu trả lời của tôi, điều này chỉ hoạt động trong một thiết bị đầu cuối tương tác. Nó sẽ không hoạt động cho SFTP và tương tự.
Martin Prikryl

thiết bị đầu cuối tương tác có nghĩa là gì?
dùng260277

Đó là một thiết bị đầu cuối mà con người tương tác với (ngược lại với phiên SFTP, phiên SCP hoặc thiết bị đầu cuối không tương tác được sử dụng để thực hiện từ xa một số nhiệm vụ theo đợt)
Martin Prikryl

Tôi đã bao gồm một số chi tiết khó khăn về việc thực hiện tùy chỉnh biểu ngữ.
Martin Prikryl

9

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.


xin chào, tôi thử cái này nhưng nó đưa ra thông báo lỗi .ssh / rc: 1: .ssh / rc: welcome: không tìm thấy.
user260277

là lỗi của tôi, tôi đã mắc lỗi đánh máy, bạn cần tiếng vang như trong tập lệnh bash bình thường
c4f4t0r

"Wolrd" cũng là một lỗi đánh máy :)
simon

Tôi nhận được "stty: tiêu chuẩn đầu vào: ioctl không phù hợp cho thiết bị".
Tạm dừng cho đến khi có thông báo mới.

bạn có gì trong .ssh / rc?
c4f4t0r
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.