Определить имя учетной записи удаленного компьютера пользователя, вошедшего в систему через SSH

Определить имя учетной записи удаленного компьютера пользователя, вошедшего в систему через SSH

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

Я пытаюсь разрешить пользователям иметь разные настройки оболочки в ~/.bash_profileзависимости от того, кто на самом деле вошел в систему. Например, когда Джонатан входит в систему, я хочу, чтобы оболочка дополнительно выполняла ~/.Jonathan_profile, а для Боба я хочу, чтобы оболочка использовала ~/.Bobпрофиль источника.

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

Любые подсказки будут высоко оценены.

решение1

Вы не можете сказать, какой счет использует клиент, потому что клиент вам этого не говорит. Но есть такие вещи, которые выможетделать:

  1. Создайте отдельные учетные записи и предоставьте пользователям доступ к общей учетной записи с помощью sudo. Это действительно предпочтительный вариант, который дает вам лучший аудит (всегда регистрируется, кто что делает), и пользователи могут помещать любые утилиты, которые они хотят, в свои учетные записи. Однако это также наиболее рабочий вариант.

  2. Используйте только аутентификацию с открытым ключом и задайте переменную среды, используя следующий синтаксис:

    environment="END_USER=whoever" ssh-rsa asdfasdfr...
    

    в .ssh/authorized_keys. Чем вы смотрите $END_USERв .profile. Очевидно, вам придется установить его для каждого открытого ключа, используемого для входа в систему.

  3. Скажите всем, чтобы они установили переменную окружения с клиента, используя SendEnvопцию (на сервере должен быть соответствующий AcceptEnvнабор). Вы снова проверяете переменную в .profile.

  4. Получите исходный IP-адрес и порт из SSH_CONNECTIONпеременной и используйте их identдля получения фактического исходного пользователя; но identdэто должно быть запущено на клиентах, и в наши дни это делается редко, поскольку это не очень полезно, но полезно для потенциального злоумышленника, чтобы получить некоторую информацию о вашей системе.

  5. Для более сложной настройки в рамках одной учетной записи всегда можно написать собственную оболочку и использовать ее с commandатрибутом в авторизованных ключах. Это также довольно много работы, но ее можно использовать для реализации практически любых ограничений и аудита без необходимости создания отдельных учетных записей.

Примечание: Я бы определенно рекомендовал использовать только открытые ключи и отключить пароль. Таким образом, если вы хотите отменить чей-то доступ, вы просто удалите его ключ.

Связанный контент