Назад | Перейти на главную страницу

Запуск сценария оболочки для определенного пользователя, который входит в систему с помощью SSH

Первый раз здесь и отправляю только потому, что я не могу найти ответ на этот вопрос, или возможно ли это вообще.

Проблема, с которой я столкнулся, заключается в том, что я хочу создать сценарий, который будет запускаться сразу после того, как пользователь войдет на мой сервер, например, с помощью Putty.

Я не хочу, чтобы пользователь мог выполнять какие-либо обычные команды, которые вы могли бы запустить, вместо этого я хочу создать сценарий, который будет реагировать на определенный набор предварительно определенных команд, например,

> Привет

Привет, имя пользователя идет сюда

Возможно ли это сделать? Использование SSH не является обязательным условием, любое другое консольное соединение, например telnet, также подойдет, я просто хочу, чтобы пользователь мог подключаться к моему серверу и получать ответ от некоторых основных команд.

Спасибо за ваше время, надеюсь, я достаточно ясно объяснил.

Я думаю, то, что вы ищете, называется Принудительные команды:

http://oreilly.com/catalog/sshtdg/chapter/ch08.html#22858

Принудительные команды могут быть весьма полезными. Предположим, вы хотите предоставить своему помощнику доступ к своей учетной записи, но только для чтения вашей электронной почты. Вы можете связать принудительную команду с ключом SSH вашего помощника, чтобы запускать только вашу почтовую программу и ничего больше.

В SSH1 и OpenSSH принудительная команда может быть указана в authorized_keys с опцией «command» перед желаемым ключом. Например, чтобы запускать почтовую программу Pine всякий раз, когда ваш помощник подключается:

# SSH1, OpenSSH
command="/usr/local/bin/pine" ...secretary's public key... 

В SSH2 принудительная команда появляется в строке, следующей сразу за желаемым ключом, с использованием ключевого слова Command. Предыдущий пример будет представлен:

# SSH2 only
Key secretary.pub
Command "/usr/local/bin/pine"

Я считаю, что это позволит им выполнить только одну команду. Если вам нужно разрешить им больше, вы можете использовать Authprogs. Это Perl сценарий, который имеет .conf файл, в котором вы можете указать команды, которые разрешено запускать человеку.

Вы можете добиться такого поведения, изменив оболочку рассматриваемой учетной записи на сценарий, который вы хотите запустить. В этом случае пользователь не получает своего обычного приглашения, где вводить обычные команды, такие как ls, cd и т.д. вообще. Вместо этого ваш скрипт запускается при входе в систему, и у вас могут быть необходимые функции.

Чтобы изменить оболочку, вы можете использовать chsh-команду или измените ее прямо на /etc/passwd. Новая оболочка (ваш скрипт) также должна быть указана в /etc/shells чтобы это работало.

Match user username
    ForceCommand command_which_you_want_to_run

Это вы можете вставить sshd_config файл вашего ssh сервер. Итак, когда пользователь с именем username подключиться к вашему серверу через ssh, command_which_you_want_to_run будет казнить.

Вы можете настроить больше своих ssh server. Следующая ссылка может помочь вам в этом.

https://wiki.archlinux.org/index.php/SFTP-chroot