Ssh đăng nhập móc?


15

Có cách nào để chạy tập lệnh / lệnh mỗi khi người dùng kết nối bằng ssh không? Nó có thể được cấu hình trên toàn cầu (tức là chạy tập lệnh khi bất kỳ người dùng nào đăng nhập)?

Tôi đã bắt gặp câu hỏi này trên Identica, nhưng vẫn chưa có câu trả lời nào và muốn biết nó bằng cách nào.

Câu trả lời:


11

Đối với tất cả người dùng, hoặc một người dùng cụ thể? Đối với một người dùng, đặt nó trong .bashrctệp của họ ; Đối với tất cả người dùng, hãy xem pam_exec .

Nếu người dùng đến từ sshd, bạn sẽ muốn thêm dòng sau vào /etc/pam.d/sshd; các tệp khác tùy thuộc vào nguồn của chúng:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

Đối với mục đích thử nghiệm, mô-đun được bao gồm dưới dạng optional, do đó bạn vẫn có thể đăng nhập nếu thất bại. Sau khi bạn chắc chắn rằng nó hoạt động, bạn có thể thay đổi optionalthành required. Sau đó, đăng nhập sẽ không thể thực hiện được trừ khi việc thực thi tập lệnh hook của bạn thành công.

Lưu ý: Như mọi khi bạn thay đổi cấu hình đăng nhập, hãy để một vỏ dự phòng mở trong nền và kiểm tra đăng nhập từ một thiết bị đầu cuối mới.


Cảm ơn, điều đó có vẻ đầy hứa hẹn. Bạn có thể xây dựng thêm một chút? Tôi không quen với điều này.
phunehehe

Tôi cho rằng tôi nên thêm session include pam_exec.so seteuid /path/to/scriptvào tập tin /etc/pam.d/system-remote-login. Đúng không?
phunehehe

Hoặc là system-remote-loginhay sshd, tùy thuộc vào cách người dùng đang đến trong.
Glen Solsberry

Tuyệt vời! Sẽ thật tuyệt nếu bạn chỉnh sửa câu trả lời để bao gồm thông tin (bạn biết, đối với những người khác đang tìm kiếm nó).
phunehehe

Lưu ý cho người googling, bạn cũng có thể đặt dòng này auth optional pam_exec.so /path/to/my/hook.shtrong /etc/pam.d/common-authcó PAM thông báo cho bạn về những sự kiện bất kỳ xác thực xảy ra. Chương trình này cũng có thể gửi cho bạn thông báo đẩy: github.com/benjojo/PushAlotAuth
Nick Sweeting

6

có một cách khác chỉ ảnh hưởng đến người dùng sử dụng ssh chứ không phải địa phương (có thể tốt hơn trong các tình huống khẩn cấp)

xem đoạn trích từ trang ssh man bên dưới.

trong trường hợp này, người dùng thường có thể tự sửa đổi các tệp (giống như .bashrc)

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

và điều này là toàn cầu và không thể sửa đổi bởi người dùng bình thường

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

2
Nhưng / etc / sshrc sẽ chỉ được thực thi nếu người dùng không có ~ / .ssh / rc, vì vậy người dùng này có thể bỏ qua
isevcik

2
@isevcik, đó chỉ là khi PermitUserRC được đặt thành "có" trong /etc/ssh/sshd_config(xem man sshd_configđể biết chi tiết)
jeremysprofile
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.