Как войти в `firebase-tools` на удаленном безголовом сервере?

Я пытаюсь использовать firebase-tools на удаленном сервере Linux через Putty. На этом сервере нет рабочего стола.

Когда я бегу firebase loginУ меня длинный URL, который мне нужно скопировать / вставить в браузер любого другого устройства:

https://accounts.google.com/o/oauth2/auth?client_id=xxxxxxxxxxxx.apps.googleusercontent.com&scope=email%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloudplatformprojects.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffirebase%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&response_type=code&state=3kkd93kl&redirect_uri=http%3A%2F%2Flocalhost%3A9005

Я копирую / вставляю это в браузер на моем локальном компьютере, затем аутентифицируюсь с моей учетной записью Google, затем он пытается перенаправить меня на

http://localhost:9005/?state=25744816&code=4/mz.....

который не является реальным сервером, работающим на моей машине, и определенно не является адресом удаленной машины, у которой даже нет активного порта 9005.

Таким образом, в результате терминал все еще сидит в "Ожидании аутентификации..."

Я вижу команду под названием login:ci который говорит, что для неинтерактивных сред, но, похоже, делает то же самое, что и login команда.

Как мне обойти эту проблему?

1 ответ

Ты можешь использовать firebase login --no-localhost

Затем будет предложен URL-адрес, который вы можете посетить из любого браузера (независимо от компьютера), например, своего хоста.

Войти в URL, быстрый ответ

Войдите в свою учетную запись Google как обычно и примите запрос на разрешение.

Наконец, скопируйте предоставленный код авторизации

Код авторизации URL, который вы посетили

И вставьте его обратно в терминал вашего удаленного компьютера. Вы должны получить сообщение об успехе.

Процедура настройки Firebase для CI и безголовых серверов описана здесь:https://github.com/firebase/firebase-tools

Интерфейс командной строки Firebase требует наличия браузера для завершения аутентификации, но полностью совместим с CI и другими автономными средами.

  1. На машине с браузером установите Firebase CLI.
  2. Запустить firebase login:ci для входа в систему и распечатки нового токена обновления (текущий сеанс CLI не будет затронут).
  3. Сохраните выходной токен безопасным, но доступным способом в вашей системе CI.

Есть два способа использовать этот токен при запуске команд Firebase:

  1. Сохраните токен как переменную среды FIREBASE_TOKEN и он будет использоваться автоматически.
  2. Запустите все команды с --token <token> в вашей системе CI.

Firebase уважает ваш стандартный токен GCP Oauth2.

Необходимость зайти в браузер и получить код не очень-то похоже на CI или безголовый.

У нас работает:

экспорт GOOGLE_APPLICATION_CREDENTIALS=key.json # Где key.json - это json-файл вашей сервисной учетной записи

экспорт FIREBASE_TOKEN=$(gcloud auth application-default print-access-token)

Другие вопросы по тегам