Một lệnh có thể được thực thi trên ssh với người dùng nologin không?


13

Nếu người dùng có loginShell=/sbin/nologinthì vẫn có thể

ssh user@machine [command]

giả sử rằng người dùng có các khóa ssh thích hợp trong thư mục chính của nó có thể được sử dụng để xác thực?

Mục tiêu của tôi là giữ cho người dùng là một nologin, nhưng vẫn có thể thực thi các lệnh trên một vài máy khác trên mạng (tương tự như việc sử dụng thông qua 'sudo -u'), và tự hỏi liệu đây có phải là một khóa học hợp lý không.


1
Nó nên hoạt động. Các commandđược chạy thay vì của vỏ đăng nhập.
orion

1
Điều này đánh bại mục đích cấu hình /sbin/nologinnhư một vỏ. Nếu mối quan tâm của bạn là bảo mật tài khoản thì việc tắt mật khẩu auth và sử dụng khóa ssh là đủ.
Lạch

@Calet có sự khác biệt giữa shell đăng nhập và các trường hợp khác của shell. Vì vậy, những gì anh ấy yêu cầu không nhất thiết phải đánh bại mục đích của / sbin / nologin. Có thể anh ta muốn thực hiện một số công việc bên ngoài bối cảnh của một vỏ đăng nhập.
Michael Martinez

7
@orion Sai. Lệnh được thực thi bởi shell đăng nhập.
Gilles 'SO- ngừng trở nên xấu xa'

@MichaelMartinez trong bối cảnh ví dụ của mình, nếu shell của /sbin/nologinngười dùng thì người dùng sẽ không thể đăng nhập hoặc thực hiện các lệnh trên máy. cronjobs có thể được chạy với tư cách người dùng và sftpcó thể được định cấu hình để mở phiên, nhưng việc mở shell qua ssh sẽ không xảy ra
Lạch

Câu trả lời:


17

Thiết /sbin/nologinnhư vỏ của người dùng (hay /bin/falsehay /bin/true, đó là gần như tương đương ) cấm người sử dụng từ đăng nhập vào chạy bất kỳ lệnh nào. SSH luôn gọi shell đăng nhập của người dùng để chạy các lệnh, vì vậy bạn cần đặt shell đăng nhập thành một shell có thể chạy một số lệnh.

Có một số shell bị hạn chế cho phép người dùng chỉ chạy một vài lệnh. Ví dụ rsshscponly đều vỏ như vậy mà cho phép người dùng chạy một số lệnh được xác định trước (ví dụ như scp, sftp-server, rsync, ...). Xem thêm Hạn chế quyền truy cập của người dùng trong linuxBạn có cần shell cho SCP không?


Cảm ơn bạn, cuối cùng tôi đã từ chức để cung cấp cho tài khoản shell đăng nhập để nó có thể chạy các lệnh từ xa. Giải pháp tốt hơn có lẽ là ssh với tư cách là người dùng hiện tại và gọi sudo -u cho lệnh ssh, nhưng điều đó không hoàn toàn áp dụng trong trường hợp của tôi.
Centimane

1

Có vẻ như câu trả lời là không.

ssh user@machine [command]

với các phím ssh tại chỗ chỉ dẫn đến kết quả:

This account is currently not available

thay vì thực thi lệnh, dường như tôi sẽ phải cấp cho nó quyền truy cập vào bash.


-4

Tôi không biết liệu điều đó có khả thi hay không (nên dễ kiểm tra) nhưng có một tính năng có thể trả lời câu hỏi của bạn theo một cách nhất định và trong mọi trường hợp sẽ giải quyết vấn đề của bạn.

Bạn có thể thêm một lệnh vào dòng khóa trong authorized_keys. Trong trường hợp đó, lệnh này được thực thi, không có gì khác. Tôi giả sử điều này hoạt động với /sbin/nologinvỏ như dù sao cũng nên bỏ qua.

Nhưng bạn sẽ cần một khóa khác nhau cho mỗi lệnh bạn cho phép.


Thật không may là giải pháp tôi cần phải được linh hoạt hơn này
Centimane

Nếu nó dễ kiểm tra, thì bạn nên kiểm tra nó trước khi viết câu trả lời.
Michael Martinez

@MichaelMartinez Nhiệm vụ của người hỏi là thực hiện các bài kiểm tra dễ dàng trước khi hỏi. Không khó để nhận thấy rằng đã không trả lời câu hỏi nhưng đã đưa ra một đề xuất cho vấn đề gây ra câu hỏi. Đó là hoàn toàn phù hợp như là một câu trả lời. Hạ bệ điều này chỉ là ngu ngốc. Bạn sẽ chỉ trích câu trả lời mà không có đoạn đầu tiên? Chính xác.
Hauke Laging

3
Lệnh in authorized_keysđược thực thi bởi shell đăng nhập, vì vậy không, điều này không hoạt động (không phải không có cấu hình không tầm thường bổ sung). (Như thế nào downvoting một câu trả lời sai “ngu ngốc” Xin? Tôn trọng người khác .)
Gilles 'Somali dừng vốn là xấu'
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.