Google Compute Engine SSH - другое имя пользователя после переключения на вход в ОС

482
Wil Koetsier

Я создал виртуальную машину Compute Engine (Ubuntu 18.04), и когда я вхожу в нее с помощью кнопки SSH в списке экземпляров виртуальной машины, я захожу как пользователь username.

Через некоторое время я понял, что мне нужно иметь возможность использовать и другой SSH-клиент. Согласно https://cloud.google.com/compute/docs/instances/connecting-advanced я включил вход в ОС, добавив пару ключ-значение в метаданные, где ключ - это enable-osloginзначение TRUE.

Затем я попытался добавить свой существующий ключ SSH:

gcloud compute os-login ssh-keys add --key-file path/to/key.pub --ttl 0

который был успешным, за исключением одной серьезной проблемы: он добавил ключ для пользователя username_gmail_comи позволит мне только ssh подключиться к моей виртуальной машине как этот пользователь:

ssh username_gmail_com@myinstance

И он также создал этого пользователя на моей виртуальной машине. Из веб-интерфейса я также вошел в виртуальную машину с этим новым пользователем ( /home/username_gmail_com). Конечно, я все еще могу получить доступ к данным исходного пользователя ( /home/username). Когда я отключаю OS Login, веб-интерфейс регистрирует меня как usernameснова и SSH от другого клиента отключается.

  1. Почему имя пользователя отличается при включении входа в систему ОС?
  2. Могу ли я изменить имя пользователя с включенным входом в ОС?

редактировать

В документы было добавлено объяснение именно этого вопроса. Проверьте здесь: https://cloud.google.com/compute/docs/oslogin/ и на странице, которую я упомянул выше, внизу под заголовком «Ожидаемое поведение при входе».

0

3 ответа на вопрос

0
Wil Koetsier

Я задал этот вопрос здесь и получил четкий ответ.

Почему имя пользователя отличается между ОС Логин и отключен?

Вход в ОС связывает вашу учетную запись пользователя Linux с вашей идентификационной информацией Google, так что у вас есть непротиворечивое имя пользователя, UID и другая информация posix в каждой виртуальной машине, в которую вы входите.

[...]

Во избежание конфликтов уникальности в разных организациях (user@gmail.com и user@example.com) доменное имя включено по умолчанию.

[...]

Когда вход в ОС не включен, имя пользователя указывается в вашем ключе SSH, который не привязан к идентификатору пользователя Google. Имя пользователя генерируется так, чтобы оно было удобным, и ни одна из проблем, связанных с логином ОС, не применяется.

И могу ли я влиять на имя пользователя при включенном входе в ОС?

Информация posix является неизменной для идентификаторов потребителей (не пользователей G Suite).

Так что нет, я не могу, потому что я человек, а не организация.

В конце концов, я решил неудобство, которое это вызвало, просто воссоздав сервер с включенным входом в ОС - это, конечно, одна из сильных сторон Compute Engine.

0

Если вы добавили свой ssh-ключ в метаданные, вы сможете получить доступ к корневой учетной записи внутри экземпляра, выполнив эту команду:

sudo -i 

В корне вы можете получить доступ к папке / home / username и передавать нужные файлы.

Спасибо за Ваш ответ. Конечно, я могу sudo для передачи файлов между моими двумя пользователями, но это неудобно (особенно, когда это не я, а, скажем, fabfile). Вместо этого я должен иметь возможность ssh своему первому пользователю, а второго никогда не должно было быть вообще. Из локальной консоли я вхожу под новым именем пользователя, а консоль Google (веб-интерфейс) - под моим первоначальным именем пользователя! Я хочу исправить это, чтобы я мог войти в систему с локальной консоли, используя свое первоначальное имя пользователя. Wil Koetsier 5 лет назад 0
Это сложно ... вы можете попытаться обмануть метаданные Google, обновив имя пользователя в конце вашего ssh-ключа, используя первое имя пользователя, и посмотрите, не войдете ли вы в систему под тем же пользователем ... 5 лет назад 0
Я попробую. Тем временем Google решил войти под новым именем пользователя - ??? это как-то связано с тем, что OS Login имеет значение TRUE. Почему это переключается на другое имя пользователя, для меня загадка. Wil Koetsier 5 лет назад 0
Это не сработало, ключи в Compute -> Metadata -> Keys нельзя редактировать. Пожалуйста, также см. Редактирование в моем вопросе. Wil Koetsier 5 лет назад 0
Вы не можете редактировать ключ, вы должны добавить новый, чтобы это работало 5 лет назад 0
0

Согласно этому документу github, пакет входа в систему ОС (гостевая среда в данном случае) получает ключи SSH из профиля входа пользователя в ОС и делает их доступными для sshd. Но при этом он должен запросить у сервера метаданных профиль и проверить авторизацию учетной записи пользователя (адрес электронной почты).

Как поясняется далее: при использовании сторонних инструментов для SSH традиционный способ добавления пользователей в экземпляр - создание и добавление открытых ключей для каждого пользователя в метаданные экземпляра или проекта и в соответствии с этим документом .

Однако вход в систему ОС предназначен для использования ролей IAM Compute Engine для управления ключами SSH. Это означает, что каждый пользователь, которому необходимо предоставить доступ SSH к экземпляру, должен иметь учетную запись Google (электронную почту), учетная запись должна быть участником проекта и иметь соответствующие роли IAM Compute Engine (например compute.oslogin).

Таким образом, когда процесс, описанный в приведенной выше ссылке на github, происходит впервые, он создает пользователя, который наследует формат учетной записи (адрес электронной почты), как user_lastname_gmail_com. Для получения дополнительной информации о входе в ОС вы можете проверить этот документ

Спасибо, что указали мне на репозиторий github. Другие 2 документа я уже прочитал (снова и снова). Ни один из них не объясняет, почему формат учетной записи используется как user_gmail_com, а не просто как пользователь. О том, что это происходит, нигде не упоминается, ни о том, как повлиять на имя пользователя, используемое при входе в ОС, ни о том, почему это делается при входе в ОС, но не в том случае, если вход в систему ОС отключен (с той же учетной записью Google). Есть ли у вас какие-либо идеи? Wil Koetsier 5 лет назад 0
@WilKoetsier При использовании входа в ОС вы хотите контролировать доступ пользователей через IAM, поэтому вы добавляете каждого пользователя в проект. Вы не можете изменять имена пользователей, поскольку они извлекаются из IAM. Когда вход в ОС отключен, вы можете использовать любое имя пользователя. Например, если вы используете SSH из браузера и даже если вы вошли в проект под своей учетной записью, вы можете «Изменить имя пользователя Linux», щелкнув верхний правый значок настройки в окне. Дополнительная информация о поведении демона учетных записей на этом [github] (https://github.com/GoogleCloudPlatform/compute-image-packages#accounts) 5 лет назад 0
Вы также можете попросить улучшить [Документ для входа в ОС] (https://cloud.google.com/compute/docs/instances/managing-instance-access), нажав кнопку обратной связи в верхней части страницы. Но, как я уже говорил, формат электронной почты является стандартным, и вы не можете изменить это поведение. В своем отзыве вы также можете попросить манипулировать именами пользователей при использовании входа в ОС в качестве новой функции. Кроме того, вы можете опубликовать свой вопрос на serverfault.com в качестве альтернативы Superuser 5 лет назад 0

Похожие вопросы