
В компании, где я работаю, у нас есть определенные общие учетные записи, которые любой может использовать через SSH для выполнения определенных задач. На данный момент у нас слишком много пользователей, и у каждого из них есть свои собственные юзабилити-привилегии, такие как псевдонимы оболочки и т. д.
Я пытаюсь разрешить пользователям иметь разные настройки оболочки в ~/.bash_profile
зависимости от того, кто на самом деле вошел в систему. Например, когда Джонатан входит в систему, я хочу, чтобы оболочка дополнительно выполняла ~/.Jonathan_profile
, а для Боба я хочу, чтобы оболочка использовала ~/.Bob
профиль источника.
Однако я не уверен, существует ли способ узнать имя учетной записи на удаленной машине пользователя, вошедшего в систему с помощью SSH.
Любые подсказки будут высоко оценены.
решение1
Вы не можете сказать, какой счет использует клиент, потому что клиент вам этого не говорит. Но есть такие вещи, которые выможетделать:
Создайте отдельные учетные записи и предоставьте пользователям доступ к общей учетной записи с помощью sudo. Это действительно предпочтительный вариант, который дает вам лучший аудит (всегда регистрируется, кто что делает), и пользователи могут помещать любые утилиты, которые они хотят, в свои учетные записи. Однако это также наиболее рабочий вариант.
Используйте только аутентификацию с открытым ключом и задайте переменную среды, используя следующий синтаксис:
environment="END_USER=whoever" ssh-rsa asdfasdfr...
в
.ssh/authorized_keys
. Чем вы смотрите$END_USER
в.profile
. Очевидно, вам придется установить его для каждого открытого ключа, используемого для входа в систему.Скажите всем, чтобы они установили переменную окружения с клиента, используя
SendEnv
опцию (на сервере должен быть соответствующийAcceptEnv
набор). Вы снова проверяете переменную в.profile
.Получите исходный IP-адрес и порт из
SSH_CONNECTION
переменной и используйте ихident
для получения фактического исходного пользователя; ноidentd
это должно быть запущено на клиентах, и в наши дни это делается редко, поскольку это не очень полезно, но полезно для потенциального злоумышленника, чтобы получить некоторую информацию о вашей системе.Для более сложной настройки в рамках одной учетной записи всегда можно написать собственную оболочку и использовать ее с
command
атрибутом в авторизованных ключах. Это также довольно много работы, но ее можно использовать для реализации практически любых ограничений и аудита без необходимости создания отдельных учетных записей.
Примечание: Я бы определенно рекомендовал использовать только открытые ключи и отключить пароль. Таким образом, если вы хотите отменить чей-то доступ, вы просто удалите его ключ.