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

2

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

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

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

Любые советы приветствуются.


источник
если есть способ сказать, я бы назвал это уязвимостью безопасности в ssh-клиенте или протоколе. Вы не должны быть в состоянии сделать, как вы предлагаете.
Фрэнк Томас
@FrankThomas: Это то, что я тоже, хотя. Есть идеи относительно возможных путей достижения того, чего я хочу?
2
Не используете общие учетные записи? кроме этого, вы можете запустить какой-нибудь сценарий при входе в систему, чтобы запросить информацию и загрузить новую оболочку, или попытаться использовать какой-либо другой посредник (общая база данных, сопоставление имени хоста и т. д.), но для этого потребуется откатить свой собственный решение.
Фрэнк Томас
Наиболее используемым решением для этого является предоставление каждому пользователю своей учетной записи (и, следовательно, своего собственного профиля со своими псевдонимами и т. Д. И т. Д.). Затем дайте им право выполнять определенные задачи из этой учетной записи.
Hennes
Подумайте о необходимости использования sudosh для получения доступа к учетным записям пользователей, отличным от собственных.
Даниэль Бек

Ответы:

2

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

  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атрибутом в авторизованных ключах. Это также довольно трудоемкая работа, но ее можно использовать для реализации практически любых ограничений и аудита без необходимости создания отдельных учетных записей.

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

Ян Худек
источник
Мы используем ключи SSH. Я постараюсь включить среду. Большое спасибо!