Trên Ubuntu 11.10, tôi thấy mình có thể chặn các lệnh ssh, được gửi có và không có -T và chặn sao chép scp, đồng thời cho phép chuyển tiếp cổng đi qua.
Cụ thể, tôi có một máy chủ redis trên "somehost" được liên kết với localhost: 6379 mà tôi muốn chia sẻ một cách an toàn qua đường hầm ssh tới các máy chủ khác có keyfile và sẽ ssh vào bằng:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
Điều này sẽ khiến redis-server, "localhost" cổng 6379 trên "somehost" xuất hiện cục bộ trên máy chủ thực hiện lệnh ssh, được ánh xạ lại thành cổng "localhost" 16379.
Trên "somehost" từ xa Đây là những gì tôi đã sử dụng cho Authority_keys:
cat .ssh/authorized_keys (portions redacted)
no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here keyuser@keyhost
Các chuyến đi no-pty lên hầu hết các nỗ lực ssh muốn mở một thiết bị đầu cuối.
Giấy phép mở giải thích những cổng nào được phép chuyển tiếp, trong trường hợp này là cổng 6379 cổng máy chủ redis mà tôi muốn chuyển tiếp.
Lệnh = "/ bin / echo do-not-send-domains" lặp lại "do-not-send-command" nếu ai đó hoặc điều gì đó quản lý để gửi lệnh đến máy chủ thông qua ssh -T hoặc cách khác.
Từ một Ubuntu gần đây man sshd
, lệnh / allow_keys được mô tả như sau:
command = "command" Chỉ định rằng lệnh được thực thi bất cứ khi nào khóa này được sử dụng để xác thực. Lệnh do người dùng cung cấp (nếu có) bị bỏ qua.
Các nỗ lực để sử dụng sao chép tệp an toàn scp cũng sẽ không thành công với tiếng vọng của "do-not-send-command". Tôi thấy sftp cũng không thành công với cấu hình này.
Tôi nghĩ rằng đề xuất shell bị hạn chế, được đưa ra trong một số câu trả lời trước đây, cũng là một ý tưởng hay. Ngoài ra, tôi đồng ý rằng mọi thứ chi tiết ở đây có thể được xác định từ việc đọc "man sshd" và tìm kiếm trong đó cho "allow_keys"
no-pty
không cho phép mở các giao diện tương tác, nhưng nó không có tác dụng gì để ngăn chặn việc thực thi lệnh, vì vậy người dùng có thể chỉnh sửaauthorized_keys
tệp nếu anh ta có quyền truy cập bằng thứ gì đó nhưssh server 'sed -i -e s/no-pty// ~/.ssh/authorized_keys'
.