Как войти в `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-адрес, который вы можете посетить из любого браузера (независимо от компьютера), например, своего хоста.
Войдите в свою учетную запись Google как обычно и примите запрос на разрешение.
Наконец, скопируйте предоставленный код авторизации
И вставьте его обратно в терминал вашего удаленного компьютера. Вы должны получить сообщение об успехе.
Процедура настройки Firebase для CI и безголовых серверов описана здесь:https://github.com/firebase/firebase-tools
Интерфейс командной строки Firebase требует наличия браузера для завершения аутентификации, но полностью совместим с CI и другими автономными средами.
- На машине с браузером установите Firebase CLI.
- Запустить firebase
login:ci
для входа в систему и распечатки нового токена обновления (текущий сеанс CLI не будет затронут).- Сохраните выходной токен безопасным, но доступным способом в вашей системе CI.
Есть два способа использовать этот токен при запуске команд Firebase:
- Сохраните токен как переменную среды
FIREBASE_TOKEN
и он будет использоваться автоматически.- Запустите все команды с
--token <token>
в вашей системе CI.
Firebase уважает ваш стандартный токен GCP Oauth2.
Необходимость зайти в браузер и получить код не очень-то похоже на CI или безголовый.
У нас работает:
экспорт GOOGLE_APPLICATION_CREDENTIALS=key.json # Где key.json - это json-файл вашей сервисной учетной записи
экспорт FIREBASE_TOKEN=$(gcloud auth application-default print-access-token)