Можно ли использовать ED25519 Вместо RSA При входе в удаленный экземпляр App Engine?

# #google-app-engine #google-cloud-platform #ssh #app-engine-flexible #ed25519

Вопрос:

Когда пользователь Google Cloud SDK ( gcloud ) выполняет:

 gcloud app instances ssh 
$AEF_INSTANCE_ID 
--project $GCP_PROJECT_NAME 
--service $AEF_APP_SERVICE_NAME 
--version $AEF_APP_VERSION_NAME

#=>

WARNING: The private SSH key file for gcloud does not exist.
WARNING: The public SSH key file for gcloud does not exist.
WARNING: You do not have an SSH key for gcloud.
WARNING: SSH keygen will be executed to generate a key.
Generating public/private rsa key pair.
. . .
 

впервые генерируется ключ RSA:

 ls -1 ~/.ssh/google_compute_*

#=>

google_compute_engine
google_compute_engine.pub
google_compute_known_hosts
 

Возможно ли в настоящее время использовать ED25519 вместо RSA?

Ответ №1:

Нет.

В настоящее время невозможно использовать ключ на основе ED25519 вместо ключа на основе RSA при входе в экземпляр работающей гибкой среды App Engine (AEF).

Другими словами, если бы вы должны были:

  1. удалите старый ключ RSA:
     rm ~/.ssh/google_compute_*
     
  2. сгенерируйте ключ ED25519:
     ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)
    
    #=>
    
    Generating public/private ed25519 key pair.
    . . .
     

    Примечание. Используйте абсолютный путь, когда запрашивается имя и расположение файла ключа; использование относительного пути возвращает следующую ошибку:

    Не удалось сохранить ключ «~/.ssh/google_compute_engine»: такого файла или каталога нет

  3. и попытайтесь войти в работающий экземпляр гибкой среды App Engine (AEF) :
     gcloud app instances ssh 
    $AEF_APP_INSTANCE_ID 
    --project $GCP_PROJECT_NAME 
    --service $AEF_APP_SERVICE_NAME 
    --version $AEF_APP_VERSION_NAME
     

вы получите следующую ошибку:

ОШИБКА: (gcloud.app.instances.ssh) НЕДОПУСТИМЫЙ аргумент: Недопустимый SSH — ключ «$(whoami):ssh-ed25519 $ED25519_ПУБЛИКАЦИОННЫЙ КЛЮЧ $(whoami)». Ожидается «[ИМЯ ПОЛЬЗОВАТЕЛЯ]:ssh-rsa [ЗНАЧЕНИЕ КЛЮЧА] [ИМЯ ПОЛЬЗОВАТЕЛЯ]» или [ИМЯ ПОЛЬЗОВАТЕЛЯ]:ssh-rsa [ЗНАЧЕНИЕ КЛЮЧА] google-ssh {«ИМЯ пользователя»:»[ИМЯ ПОЛЬЗОВАТЕЛЯ]»,»СРОК действия»:»[ВРЕМЯ ИСТЕЧЕНИЯ]»}.

Если указано время истечения срока действия, пожалуйста, обратитесь к RFC3339 для правильного формата.

Тем не менее, вы можете найти активный запрос на эту функцию здесь.