
В настоящее время я настраиваю Linux-бокс, привязанный к Active Directory. Этот бокс позволит пользователям подключаться к нему по SSH с их именем пользователя и паролем AD для сбора информации (Box A). Проблема в том, что я пытаюсь создать функцию в /etc/bash.bashrc, чтобы пользователи могли ввести, например, "get_info", функция подключится по SSH к удаленной машине (Box B), выполнит команду и выведет информацию обратно пользователю.
Проблема в том, что я сгенерировал ключ rsa на Box A, добавил его в author_keys на Box B, и он отлично работает. Проблема, с которой я столкнулся, заключается в том, как настроить это один раз для текущих пользователей и любого нового пользователя, который входит в Box A.
Есть ли лучший подход, чем тот, что я делаю сейчас? По сути, мне просто нужно подключиться к удаленному ящику, выполнить команду, вывести информацию обратно пользователю и все. Как я могу разрешить новым пользователям подключаться через скрипт к удаленному ящику без необходимости генерировать для них ключи RSA.
Функция get_info получит значение «get_info 012345» и вернет результаты.
решение1
Что нужно:
- Общие ключи пользователей
- Создать общий скрипт на сервере
В конфигурации ssh ограничьте пользователя определенными командами:
command="/bin/myscript.sh",без-переадресации-портов,без-переадресации-X11,без-переадресации-агентов,без-pty ssh-dss AAAAB3....o9M9qz4xqGCqGXoJw= пользователь
Создайте скрипт на локальном компьютере или в домашних папках, который выполняет команду ssh на удаленном сервере, выполняет скрипт на сервере и затем выводит
Если вам нужен вход в удаленный сеанс, вы можете запустить свой локальный скрипт
./local.sh 01234
Который выполняет:
ssh user@remote '/bin/myscript.sh $1'
Это интерпретируется как
ssh user@remote '/bin/myscript.sh 01234
решение2
Вместо того, чтобы изменять /etc/bash.bashrc
, почему бы не создать программу (возможно, написанную на bash), которая находится в стандартном PATH для всех пользователей на локальном хосте. Эта программа может вызывать ssh с флагом, указывающим на общий закрытый ключ в локальной системе (например, вы можете поместить его в /etc или /etc/opt/ где-нибудь). Удаленная система будет иметь одну учетную запись, содержащую файл открытого ключа, измененный (см. man-страницы ssh) так, чтобы любой, кто использует открытый ключ, мог выполнить только одну команду (т. е. вашу информационную команду).