Аутентификация на сервере без графического интерфейса
Важно
Аутентификация в CLI аккаунтом Яндекса, федеративным аккаунтом и аккаунтом локального пользователя осуществляется с помощью браузера и графического интерфейса.
Предпочтительным способом работы с CLI на сервере без графического интерфейса является использование сервисного аккаунта.
Если по какой-то причине вы не можете использовать сервисный аккаунт, выполните аутентификацию через SSH-туннель или с помощью форвардинга X11.
В подразделе приведены следующие способы аутентификации на сервере без графического интерфейса:
Аутентификация с помощью форвардинга X11
В примере описана аутентификация с помощью форвардинга X11
-
Если вы подключаетесь к ВМ из macOS или Windows, установите и запустите X-сервер, например XQuartz
для macOS или VcXsrv для Windows. На Linux эта функциональность доступна по умолчанию. -
Подключитесь к серверу по SSH:
ssh -i <файл_ключа> <имя_пользователя>@<публичный_IP-адрес_сервера> -
Откройте файл
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config -
Раскомментируйте следующие строки:
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes -
Установите пакеты X-сервера:
sudo apt get update sudo apt-get install xauth xorg -
Отключитесь от сервера и заново подключитесь к X-серверу с помощью флага
-X:ssh -X -i <файл_ключа> <имя_пользователя>@<публичный_IP-адрес_сервера> -
(Опционально) Убедитесь, что форвардинг X11 работает, выполнив команду:
xeyesОткроется окно Xeyes, закройте его.
-
Установите браузер Chromium
и убедитесь, что он запускается:sudo apt update && sudo apt install chromium-browser export XAUTHORITY=$HOME/.Xauthority chromiumОткроется окно браузера, закройте его.
-
Установите CLI и пакет для взаимодействия с X11:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash exec -l $SHELL sudo apt install xdg-utils -
Запустите аутентификацию:
Аккаунт на ЯндексеФедеративный аккаунтАккаунт локального пользователяyc init --username=<электронная_почта>Подробнее на странице Аутентификация с аккаунтом на Яндексе.
yc init --federation-id=<идентификатор_федерации>Подробнее на странице Аутентификация от имени федеративного пользователя.
yc init --userpool-id=<идентификатор_пула_пользователей>Подробнее на странице Аутентификация от имени локального пользователя.
Откроется окно браузера со страницей аутентификации.
-
Завершите настройку CLI.
Пример аутентификации через SSH-туннель
Для аутентификации на ВМ Linux выполните следующие шаги:
-
Подключитесь к ВМ по SSH.
-
Создайте на ВМ файл
/usr/local/bin/xdg-openсо следующим содержимым:#!/bin/sh echo $* > /dev/tty -
Назначьте права на исполнение файла:
sudo chmod +x /usr/local/bin/xdg-open -
Установите CLI:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash exec -l $SHELL -
Запустите аутентификацию:
Аккаунт на ЯндексеФедеративный аккаунтАккаунт локального пользователяyc init --username=<электронная_почта>Подробнее на странице Аутентификация с аккаунтом на Яндексе.
yc init --federation-id=<идентификатор_федерации>Подробнее на странице Аутентификация от имени федеративного пользователя.
yc init --userpool-id=<идентификатор_пула_пользователей>Подробнее на странице Аутентификация от имени локального пользователя.
-
Выберите профиль, для которого вы хотите настроить аутентификацию, или создайте новый.
Welcome! This command will take you through the configuration process. Pick desired action: [1] Re-initialize this profile 'default' with new settings [2] Create a new profile -
CLI выведет сообщение о продолжении аутентификации в браузере. Для продолжения нажмите клавишу Enter.
Аккаунт на ЯндексеФедеративный аккаунтАккаунт локального пользователяYou are going to be authenticated via username '<электронная_почта>'. Authentication web site will be opened. After your successful authentication, you will be redirected to 'https://console.yandex.cloud'. Press 'enter' to continue...You are going to be authenticated via federation-id 'aje1f0hsgds3a********'. Your federation authentication web site will be opened. After your successful authentication, you will be redirected to 'https://console.yandex.cloud'. Press 'enter' to continue...You are going to be authenticated via userpool-id 'ek0auknfc0mh********'. Your userpool authentication web site will be opened. After your successful authentication, you will be redirected to cloud console. Press 'enter' to continue... -
После нажатия клавиши Enter вы получите URL следующего вида:
https://auth.yandex.cloud/oauth/authorize?client_id=yc.oauth.public-sdk&code_challenge=y22kspX4VrKLmdg9hGr_Bwgte_a3RXtw1En********&code_challenge_method=S256&redirect_uri=http%3A%2F%2F127.0.0.1%3A42121%2Fauth%2Fcallback&response_type=code&scope=openid&state=aExf0z********&yc_federation_hint=federation-idСохраните этот URL. Он потребуется для аутентификации в браузере. Вам также понадобится порт, который вы можете найти в query-параметре
redirect_uriпосле IP-адреса127.0.0.1. В данном случае это порт42121. -
На локальном компьютере откройте новое окно терминала и выполните команду для создания SSH-туннеля, указав порт, полученный в предыдущем шаге, имя пользователя и IP-адрес ВМ:
ssh -L <порт>:127.0.0.1:<порт> <имя_пользователя>@<IP-адрес_ВМ> -
В браузере на локальном компьютере откройте URL для аутентификации, полученный ранее.
-
Если аутентификация прошла успешно, в ожидающей команде CLI в SSH-сессии ВМ вы увидите следующий шаг настройки профиля.
-
Завершите настройку CLI.