Чи може команда виконуватися над ssh разом із користувачем, що не використовує nologin?


13

Якщо у користувача loginShell=/sbin/nologinє все-таки це можливо

ssh user@machine [command]

припускаючи, що користувач має в своєму домашньому каталозі належні ключі ssh, які можна використовувати для автентифікації?

Моя мета - утримати користувача як нологіна, але все ще в змозі виконувати команди на кількох інших машинах у мережі (подібно до використання через 'sudo -u'), і мені цікаво, чи це розумний курс.


1
Це має працювати. commandЗапускається замість шелл.
orion

1
Це перемагає призначення конфігурації /sbin/nologinяк оболонки. Якщо ви турбуєтесь про безпеку облікового запису, достатньо вимкнути автентифікацію пароля та використовувати ключ ssh.
Крик

@Creek є різниця між оболонками для входу та іншими примірниками оболонки. Отже, те, що він запитує, не обов'язково перемагає мету / sbin / nologin. Можливо, він хоче виконати якусь роботу поза контекстом оболонки для входу.
Майкл Мартінес

7
@orion Неправильно. Команда виконується з допомогою шелл.
Жил "ТАК - перестань бути злим"

@MichaelMartinez в контексті його прикладу, якщо оболонка користувача є, /sbin/nologinтоді користувач не зможе ввійти або виконати команди на машині. cronjobs можна використовувати як користувач і sftpможе бути налаштований на відкриття сеансів, але відкриття оболонки через ssh не відбудеться
Creek

Відповіді:


17

Установка в /sbin/nologinякості оболонку (або , /bin/falseабо /bin/true, які майже еквівалентні ) забороняє користувачеві вхід , щоб виконати будь-яку команду взагалі. SSH завжди викликає оболонку входу користувача для запуску команд, тому вам потрібно встановити оболонку входу на ту, яка здатна виконувати деякі команди.

Існує кілька обмежених оболонок, які дозволяють користувачам виконувати лише кілька команд. Наприклад rssh і scponly є такими оболонками , які дозволяють користувачеві запускати кілька визначених команд (такі як scp, sftp-server, rsync, ...). Див. Також Обмеження доступу користувачів у Linux та чи потрібна оболонка для SCP?


Дякую, я пішов у відставку, надавши обліковому запису оболонку для входу, щоб він міг запускати віддалені команди. Кращим рішенням було б, напевно, ssh як поточний користувач і викликати sudo -u для команди ssh, але це не зовсім застосовно в моєму випадку.
Стіман

1

Здається, відповідь - ні.

ssh user@machine [command]

при наявності клавіш ssh приводить лише до:

This account is currently not available

а не команда, яка виконує, здається, я повинен надати їй доступ до bash.


-4

Я не знаю, чи це можливо (це повинно бути легко перевірити), але є функція, яка, ймовірно, відповідає на ваше запитання певним чином і в будь-якому випадку вирішує вашу проблему.

Ви можете додати команду до ключового рядка в authorized_keys. У цьому випадку ця команда виконується, нічого іншого. Я припускаю, що це спрацьовує, /sbin/nologinоскільки оболонку потрібно ігнорувати.

Але вам знадобиться інший ключ для кожної дозволеної команди.


На жаль, рішення, яке мені потрібно, повинно було бути більш гнучким, ніж це
Centimane

якщо це легко перевірити, то слід перевірити його, перш ніж написати відповідь.
Майкл Мартінес

@MichaelMartinez Завдання запитувача зробити легкі тести, перш ніж задавати питання. Не важко помітити, що не відповів на питання, але зробив пропозицію щодо проблеми, яка викликала це питання. Що цілком підходить як відповідь. Відмовлятися від цього просто нерозумно. Ви б розкритикували відповідь без першого абзацу? Саме так.
Hauke ​​Laging

3
Команда в authorized_keysвиконується оболонкою для входу, тому ні, це не працює (не без додаткової нетривіальної конфігурації). (Як викликає помилкову відповідь "дурною"? Будь ласка, поважай інших .)
перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.