Câu trả lời:
Không. Không phải là lệnh "được phép", mà là lệnh "bắt buộc" (dưới dạng tùy chọn ForceCommand ).
Khả năng duy nhất là sử dụng các phím khác nhau cho các lệnh khác nhau hoặc đọc các tham số từ đó stdin
.
Bạn chỉ có thể có một lệnh cho mỗi khóa, bởi vì lệnh đó là cưỡng bức.
Nhưng bạn có thể sử dụng một tập lệnh bao bọc. Lệnh được gọi lấy dòng lệnh gốc làm biến môi trường $SSH_ORIGINAL_COMMAND
mà nó có thể đánh giá.
Ví dụ: đặt cái này vào ~/.ssh/allowed-commands.sh
:
#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
case "$SSH_ORIGINAL_COMMAND" in
"systemctl restart cups")
systemctl restart cups
;;
"shutdown -r now")
shutdown -r now
;;
*)
echo "Access denied"
exit 1
;;
esac
Sau đó tham khảo nó ~/.ssh/authorized_keys
với
command="/home/user/.ssh/allowed-commands.sh",…
Trong SSH tuyệt vời , The Secure Shell: The Definitive Guide book của O'Reilly, trong chương tám, có một ví dụ hay được đưa ra bằng cách sử dụng một tập lệnh như sau:
#!/bin/sh
/bin/echo "Welcome!
Your choices are:
1 See today's date
2 See who's logged in
3 See current processes
q Quit"
/bin/echo "Your choice:"
read ans
while [ "$ans" != "q" ]
do
case "$ans" in
1)
/bin/date
;;
2)
/usr/bin/who
;;
3)
/usr/bin/top
;;
q)
/bin/echo "Goodbye"
exit 0
;;
*)
/bin/echo "Invalid choice '$ans': please try again"
;;
esac
/bin/echo "Your choice:"
read ans
done
exit 0
Sử dụng điều này trong .authorized_keys
tập tin của bạn như:
command="/path/to/your/script.sh" <ssh-key>
... cung cấp cho bạn điều này khi làm ssh
:
Welcome!
Your choices are:
1 See today's date
2 See who's logged in
3 See current processes
q Quit
Your choice:
scp
, sftp
và tất cả những thứ khác bạn có thể thấy hữu ích một ngày nào đó.
command
tùy chọn nói chung?
Các cách tiếp cận khác sử dụng ví dụ như trình bao bị hạn chế cho người dùng đã cho hoặc sử dụng trình bao bọc hạn chế các lệnh đối với các tệp / tập lệnh được tìm thấy trong một thư mục cụ thể, do đó cho phép tăng danh sách các lệnh mà không thay đổi trình bao bọc.
Một bài viết khác mô tả một tập lệnh chung, cũng cho phép các đối số dòng lệnh cho các lệnh được phép, nhưng cho phép khóa chúng với các quy tắc được thể hiện dưới dạng các biểu thức thông thường.
Ví dụ này sẽ được thể hiện theo cách sau:
command="only systemctl shutdown"
Và một .onlyrules
tệp sẽ được tạo với nội dung này:
\:^systemctl restart cups$:{p;q}
\:^shutdown -r now$:{p;q}
Ưu điểm của phương pháp 'duy nhất' này là không cần phải viết các tập lệnh riêng cho từng người dùng và tình huống.
ForcedCommand
SSH_ORIGINAL_COMMAND
(perman sshd
) để nó có sẵn trong các tập lệnh. Ngoài ra để đưa ra một ví dụ cho các tập lệnh tự động cho phép các mẫu nhất địnhSSH_ORIGINAL_COMMAND
chạy. Xem thêm unixwars.blogspot.com/2014/12/getting-sshorigencommand.html