Можно ли выполнить команду через ssh с пользователем nologin?


13

Если у пользователя есть loginShell=/sbin/nologin, это все еще возможно

ssh user@machine [command]

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

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


1
Он должен работать. commandЗапускается вместо шелл.
Орион

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поскольку оболочку следует игнорировать в любом случае.

Но вам потребуется отдельный ключ для каждой команды, которую вы разрешаете.


К сожалению, решение, в котором я нуждаюсь, должно быть более гибким, чем это
Сентиман

если это легко проверить, то вы должны проверить это, прежде чем писать ответ.
Майкл Мартинес

@MichaelMartinez Задача спрашивающего - сделать простые тесты, прежде чем спрашивать. Нетрудно заметить, что не ответили на вопрос, но внесли предложение по проблеме, вызвавшей вопрос. Что идеально подходит в качестве ответа. Понижать это просто глупо. Вы бы раскритиковали ответ без первого абзаца? Точно.
Хауке Лагинг

3
Команда in authorized_keysвыполняется оболочкой входа в систему, поэтому нет, это не работает (не без дополнительной нетривиальной конфигурации). (Как отрицательный ответ «глупый»? Пожалуйста, уважайте других .)
Жиль, ТАК, перестань быть злым
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.