The Project Dashboard belongs to the whole project, therefore you need at least a Project Viewer primitive role to view its contents (or Project Editor or Project Admin to edit):
Cloud IAM > Doc > Understanding roles > Primitive roles
Compute Engine > Doc > Access control overview > Granting users SSH access to VM instances explains which permissions are needed to access instances via SSH:
To give a user the ability to connect to a VM instance using SSH
without granting them the ability to manage Compute Engine resources,
add the user's public
key
to the project, or add a user's public key to a specific instance.
Using this method, you can avoid adding a user as a Project member,
while still granting them access to specific instances.
To learn more about SSH and managing SSH keys, read the SSH keys
overview.
Note that if you grant the roles/compute.instanceAdmin.v1
role to a
project member, they can automatically connect to instances using SSH,
as long as the instance is not set up to run as a service account. If
the instance is set up to run as a service account, you must also
grant the roles/iam.serviceAccountUser
role before the member can
connect to the instance. If you add a member as a Project Owner or
Editor, they also automatically have SSH access to VM instances in the
project.
Please make sure that ingress traffic to the port 22 is enabled.
GCP Console => VPC network => Firewall rules
There should be a firewall rule, for instance for the Default network type this is default-allow-ssh
, that allows SSH ingress traffic to TCP port 22 from anywhere (0.0.0.0/0
).
You can create such a rule manually:
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
If you can connect to other than one instance, it could be that VPC firewall rule uses Network tags to distinguish targets. You should check that for an instance you can connect to:
GCP Console => Compute Engine => VM instances => my-instance-name => Network tags
and then seek for that tags in the existing firewall rules:
GCP Console => VPC network => Firewall rules => my-ssh-enable => Targets => Target tags
Then you should tag the VM instance you want to connect to with that network tag:
GCP Console => Compute Engine => VM instances => my-instance-name => Edit => Network tags
As for the "unexpected error", it makes sense to follow the directive from the message and "try again" later. It could be an intermittent error.