У меня есть несколько экземпляров GCE в одном проекте и в одной сети по умолчанию. Я назначил один экземпляр сервером-бастионом и хочу заблокировать SSH из Интернета для всех экземпляров, кроме сервера-бастиона, но разрешить серверу-бастиону использовать SSH для других моих экземпляров.
Поэтому я изменил правило default-allow-ssh, чтобы разрешить SSH только к цели с тегом "jumphost", и применил этот тег к моему экземпляру бастиона. Это работает, поскольку я могу подключиться к моему серверу-бастиону по SSH из Интернета, но больше не могу подключиться по SSH к другим своим экземплярам из Интернета.
Затем я создал новое правило limited-allow-ssh, которое разрешало доступ SSH только из моего экземпляра бастиона к другим моим экземплярам:
gcloud compute --project "<my project>" firewall-rules create "restricted-allow-ssh" --allow tcp:22 --description "Allow SSH only from bastion server" --network "default" --source-tags "jumphost" --target-tags "restricted-ssh"
Затем я применил тег «limited-ssh» ко всем своим экземплярам, кроме сервера-бастиона.
это казалось для работы, поскольку я не могу подключиться по telnet из Интернета к порту 22 на моих экземплярах с тегом «limited-ssh», но я могу подключиться к ним через порт 22 с моего сервера-бастиона.
Однако, когда я пытаюсь использовать gcloud для вычисления ssh для любого экземпляра с моего сервера-бастиона, он просто зависает, и в конечном итоге я получаю ошибку «Время ожидания соединения истекло».
Интересно, что использование gcloud с коротким именем моего экземпляра (например, «dev»), похоже, разрешает общедоступный IP-адрес с моего сервера-бастиона. Но nslookup разрешает его во внутренний сетевой адрес, где открыт порт 22. Похоже, что "gcloud compute ssh" с моего хоста-бастиона пытается пройти через внешний IP-адрес, но ему отказывают, потому что порт закрыт.
Есть ли предложения по простому исправлению или простой альтернативе достижению того же результата?
Оказывается, с моим бастионным решением для бедняков я могу использовать ssh -I ~ / .ssh / google_compute_engine с моего jumphost. Нет необходимости в gcloud compute ssh.