gcloud compute ssh - избегайте использования двухфакторной аутентификации каждый раз?

Я использую gcloud compute ssh для SSH в моем экземпляре, например:

$ gcloud compute ssh shell-server --project=XXXXXXXXXXXXXXXX
No zone specified. Using zone [us-central1-f] for instance: [shell-server].
External IP address was not found; defaulting to using IAP tunneling.
Please choose from the available authentication methods:
1: Security code from Google Authenticator application
2: Voice or text message verification code

Enter the number for the authentication method to use: 1
Enter your one-time password: XXXXXX
username@shell-server ~ $

К сожалению, мне каждый раз приходится использовать двухфакторную аутентификацию. Мне нравится 2FA, но, может быть, есть способ настроить все так, чтобы мне приходилось предоставлять его только каждые несколько часов?

Обновление: Я запустил gcloud compute ssh --dry-run , который сообщает вам, какую именно команду он выполняет:

/usr/bin/ssh \
    -t \
    -i /Users/kannan/.ssh/google_compute_engine \
    -o CheckHostIP=no \
    -o HostKeyAlias=compute.123123123123123123 \
    -o IdentitiesOnly=yes \
    -o StrictHostKeyChecking=no \
    -o UserKnownHostsFile=/Users/kannan/.ssh/google_compute_known_hosts \
    -o ProxyCommand='/usr/local/bin/python3 -S /Users/kannan/Software/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel shell-server %p --listen-on-stdin --project=XXXXXXXXXX --zone=us-central1-f --verbosity=warning' \
    -o ProxyUseFdpass=no \
    kannan_example_org@compute.123123123123123123

Обновление 2 : я мог бы сохранить gcloud compute start-iap-tunnel в фоновом режиме и настроить свой SSH для использования этого туннеля, но я ' m надеясь на что-то более автоматическое, подобное удобству SSH ControlMaster = auto .

0
задан 24 June 2021 в 03:51
2 ответа

Я понял это. Поместите это в ~/.ssh/config:

Host shell-server
    User kannan_example_org
    IdentityFile ~/.ssh/google_compute_engine
    UserKnownHostsFile ~/.ssh/google_compute_known_hosts
    CheckHostIP no
    StrictHostKeyChecking no
    ProxyCommand gcloud compute start-iap-tunnel %n %p --project="..." --zone="..." --listen-on-stdin --verbosity=warning
    ProxyUseFdpass no
    ControlMaster auto
    ControlPersist 30m
  • ControlMaster auto: При каждом вызове ssh/scp сначала проверять, есть ли существующее соединение с shell-сервером. Если да, просто поделитесь этим соединением, чтобы не было повторного аутентификации и, следовательно, повторного 2FA.
  • ControlPersist 30m говорит SSH, что даже после завершения всех вызовов ssh/scp, соединение с общим доступом должно оставаться открытым в течение 30 м.

Теперь я могу просто использовать обычные команды ssh и scp с именем хоста shell-server.

Примечание: я фактически закончил тем, что установил ProxyCommand в пользовательский сценарий-обертку, который автоматически определяет --project=... и --zone=... из имени хоста.

0
ответ дан 28 July 2021 в 14:37

Двухфакторная аутентификация - это часть службы входа в ОС. Не могли бы вы проверить с помощью приведенной ниже команды, установлен ли у вас флаг для проекта?

gcloud compute project-info описать | grep os

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

Дополнительная информация здесь:

https://cloud.google.com/compute/docs/instances/managing-instance-access#enable_oslogin

Надеюсь, это поможет.

0
ответ дан 28 July 2021 в 14:37

Теги

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