Sau bốn năm, câu trả lời này xứng đáng được cập nhật. Mặc dù ban đầu tôi đã sử dụng authorized_keys
bản thân mình và có thể sẽ vẫn sử dụng nó trong một số trường hợp chọn lọc, bạn cũng có thể sử dụng sshd_config
tệp cấu hình máy chủ trung tâm .
sshd_config
Bạn có thể chỉ định (cho trường hợp sử dụng cụ thể của mình) một nhóm, chẳng hạn như proxy-only
hoặc Match
người dùng cá nhân. Trong sshd_config
. Điều này được thực hiện sau khi cài đặt chung và thu hồi, lặp lại hoặc tinh chỉnh một số cài đặt được cung cấp trong cài đặt chung.
Lưu ý: một số cú pháp / chỉ thị được sử dụng sshd_config(5)
được ghi lại trong man
trang cho ssh_config(5)
. Đặc biệt, đảm bảo đọc phần THỰC HÀNH của ssh_config(5)
.
Đối với một nhóm, điều này có nghĩa là Match
khối của bạn sẽ bắt đầu như thế này:
Match group proxy-only
Bạn có thể Match
các tiêu chí sau: User
, Group
, Host
, LocalAddress
, LocalPort
và Address
. Để phù hợp với một số tiêu chí, chỉ cần phân tách các cặp mẫu tiêu chí ( group proxy-only
ở trên).
Bên trong một khối như vậy, theo truyền thống được thụt lề theo cách ngắn gọn (nhưng không cần thiết), sau đó bạn có thể khai báo các cài đặt bạn muốn áp dụng cho nhóm người dùng mà không phải chỉnh sửa từng authorized_keys
tệp cho các thành viên của nhóm đó.
Các no-pty
thiết lập từ authorized_keys
sẽ được nhân đôi bởi một PermitTTY no
thiết lập và command="/sbin/nologin"
sẽ trở thành ForceCommand /sbin/nologin
.
Ngoài ra, bạn cũng có thể đặt thêm cài đặt để đáp ứng sự hoang tưởng của quản trị viên, chẳng hạn như - chroot
đưa người dùng vào thư mục nhà của anh ta và sẽ kết thúc với một cái gì đó như thế này:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
(tự kiểm tra xem bạn cần hay muốn các dòng nhận xét và không ghi chú khi cần)
Mã %h
thông báo được thay thế bởi thư mục chính của người dùng ( %u
sẽ mang lại tên người dùng và %%
ký hiệu phần trăm). Tôi thấy ChrootDirectory
đặc biệt hữu ích để giới hạn sftp-only
người dùng của mình :
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Xin lưu ý rằng chỉ có một số chỉ thị nhất định có thể được sử dụng trong một Match
khối. Tham khảo man
trang sshd_config(5)
để biết chi tiết (tìm kiếm Match
).
ủy quyền
NB: phần dưới nhận xét này là câu trả lời ban đầu của tôi. Trong khi đó - nhưng nó cũng phụ thuộc vào các tính năng của sshd
phiên bản chính xác của bạn - tôi sẽ sử dụng phương pháp được mô tả ở trên trong hầu hết các trường hợp.
Có, bạn có thể, chi tiết như bạn có thể gán các khóa công khai. Ngoài nologin theo khuyến nghị của ajdecon, tôi sẽ đề nghị thiết lập các mục sau trước mục nhập chính trong authorized_keys
:
no-pty ssh-rsa ...
No pty nói với phía máy chủ rằng không nên phân bổ thiết bị đầu cuối giả cho khóa đó.
Bạn cũng có thể buộc thực thi một cái gì đó như nologin cho một khóa cụ thể bằng cách thêm vào điều này:
command="/sbin/nologin",no-pty ssh-rsa ...
no-pty
một mình sẽ không ngăn người dùng khóa thực thi các lệnh. Xem superuser.com/q/1230979/195460 .