Новичок в gcloud, вам необходимо администрировать вычислительный движок. У меня следующие роли:
Тем не менее, когда я смотрю на панель управления, карта Compute Engine говорит
"У вас нет разрешения на просмотр этой карты"
Насколько я понимаю, «Compute Admin» предоставил мне полный доступ к ресурсу. Почему я не могу просмотреть эту карточку? Если я нажимаю «Перейти к Compute Engine», я получаю консоль вычислительного механизма и вижу экземпляры виртуальных машин, но когда я нажимаю на раскрывающийся список SSH, я получаю пустое окно. Появится диалоговое окно
«Подключение ... Перенос ключей SSH на ВМ»
который затем заменяется на
«Ошибка подключения. Вы не можете подключиться к экземпляру виртуальной машины из-за непредвиденной ошибки. Подождите несколько секунд и повторите попытку. (№15)»
Если я выполняю tcpdump на брандмауэре на моем конце, я не вижу, чтобы трафик на 22-й порт ни входил, ни уезжал. Проблема возникает как в системе с фиксированным IP-адресом, так и в системе с адресом, переведенным через ntp. Проблема возникает как в Firefox, так и в Chrome, как в системе freebsd, так и в системе Windows. Я могу подключиться по SSH с этих машин к другой системе.
Должно быть, мне не хватает других ролей?
Панель управления проектом принадлежит ко всему проекту, поэтому вам потребуется как минимум примитивная роль Project Viewer для просмотра его содержимого (или редактора проекта или администратора проекта для редактирования):
Cloud IAM> Документ> Общие сведения о ролях> Примитивные роли
Compute Engine> Документ> Обзор управления доступом> Предоставление пользователям SSH-доступа к экземплярам виртуальных машин объясняет, какие разрешения необходимы для доступа к экземплярам через SSH:
Чтобы дать пользователю возможность подключаться к экземпляру виртуальной машины с помощью SSH, не давая ему возможности управлять ресурсами Compute Engine, добавить открытый ключ пользователя в проект или добавить открытый ключ пользователя в конкретный экземпляр. Используя этот метод, вы можете избежать добавления пользователя в качестве участника проекта, но при этом предоставить ему доступ к определенным экземплярам.
Чтобы узнать больше о SSH и управлении ключами SSH, прочтите Обзор ключей SSH.
Обратите внимание, что если вы предоставитеroles/compute.instanceAdmin.v1
роль участника проекта, они могут автоматически подключаться к экземплярам с помощью SSH, если экземпляр не настроен для работы в качестве учетной записи службы. Если экземпляр настроен для работы в качестве учетной записи службы, вы также должны предоставитьroles/iam.serviceAccountUser
роль перед тем, как участник сможет подключиться к экземпляру. Если вы добавляете участника в качестве владельца или редактора проекта, он также автоматически получает SSH-доступ к экземплярам виртуальных машин в проекте.
Убедитесь, что входящий трафик на порт 22 включен.
GCP Console => VPC network => Firewall rules
Должно быть правило брандмауэра, например, для По умолчанию тип сети это default-allow-ssh
, который позволяет входить трафик SSH на TCP-порт 22 из любого места (0.0.0.0/0
).
Вы можете создать такое правило вручную:
GCP Console => VPC network => Firewall rules => Create Firewall Rule
Name: my-allow-ssh
Network: mynet
Targets: All instances in the network
Source filter: IP Ranges
Source IP ranges: 0.0.0.0/0
Protocols and ports: Specified protocols and ports
tcp: ports 22
Если вы можете подключиться не к одному экземпляру, возможно, правило брандмауэра VPC использует сетевые теги для различения целей. Вы должны проверить, что для экземпляра, к которому вы можете подключиться:
GCP Console => Compute Engine => VM instances => my-instance-name => Network tags
а затем найдите эти теги в существующих правилах брандмауэра:
GCP Console => VPC network => Firewall rules => my-ssh-enable => Targets => Target tags
Затем вы должны пометить экземпляр виртуальной машины, к которой вы хотите подключиться, этим сетевым тегом:
GCP Console => Compute Engine => VM instances => my-instance-name => Edit => Network tags
Что касается «непредвиденной ошибки», имеет смысл следовать директиве из сообщения и «повторить попытку» позже. Это может быть периодическая ошибка.