mirror of
https://github.com/imjasonh/gcloud-help
synced 2026-07-08 18:45:13 +00:00
264 lines
11 KiB
Text
264 lines
11 KiB
Text
NAME
|
|
gcloud alpha compute ssh - SSH into a virtual machine instance
|
|
|
|
SYNOPSIS
|
|
gcloud alpha compute ssh [USER@]INSTANCE [--command=COMMAND]
|
|
[--container=CONTAINER] [--dry-run] [--force-key-file-overwrite]
|
|
[--plain] [--ssh-flag=SSH_FLAG] [--ssh-key-file=SSH_KEY_FILE]
|
|
[--strict-host-key-checking=STRICT_HOST_KEY_CHECKING] [--troubleshoot]
|
|
[--zone=ZONE] [--internal-ip | --tunnel-through-iap]
|
|
[--network=NETWORK --region=REGION : --dest-group=DEST_GROUP]
|
|
[--ssh-key-expiration=SSH_KEY_EXPIRATION
|
|
| --ssh-key-expire-after=SSH_KEY_EXPIRE_AFTER] [GCLOUD_WIDE_FLAG ...]
|
|
[-- SSH_ARGS ...]
|
|
|
|
DESCRIPTION
|
|
(ALPHA) gcloud alpha compute ssh is a thin wrapper around the ssh(1)
|
|
command that takes care of authentication and the translation of the
|
|
instance name into an IP address.
|
|
|
|
To use SSH to connect to a Windows VM, refer to this guide:
|
|
https://cloud.google.com/compute/docs/connect/windows-ssh
|
|
|
|
The default network comes preconfigured to allow ssh access to all VMs. If
|
|
the default network was edited, or if not using the default network, you
|
|
may need to explicitly enable ssh access by adding a firewall-rule:
|
|
|
|
$ gcloud compute firewall-rules create --network=NETWORK \
|
|
default-allow-ssh --allow=tcp:22
|
|
|
|
gcloud alpha compute ssh ensures that the user's public SSH key is present
|
|
in the project's metadata. If the user does not have a public SSH key, one
|
|
is generated using ssh-keygen(1) (if the --quiet flag is given, the
|
|
generated key will have an empty passphrase).
|
|
|
|
If the --region and --network flags are provided, then --plain and
|
|
--tunnel-through-iap are implied and an IP address must be supplied instead
|
|
of an instance name. This is most useful for connecting to on-prem
|
|
resources.
|
|
|
|
EXAMPLES
|
|
To SSH into 'example-instance' in zone us-central1-a, run:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a
|
|
|
|
You can also run a command on the virtual machine. For example, to get a
|
|
snapshot of the guest's process tree, run:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
--command="ps -ejH"
|
|
|
|
When running a command on a virtual machine, a non-interactive shell will
|
|
typically be used. (See the INVOCATION section of
|
|
https://linux.die.net/man/1/bash for an overview.) That behavior can be
|
|
overridden by specifying a shell to run the command, and passing the -t
|
|
flag to SSH to allocate a pseudo-TTY. For example, to see the environment
|
|
variables set during an interactive session, run:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
--command="bash -i -c env" -- -t
|
|
|
|
If you are using the Google Container-Optimized virtual machine image, you
|
|
can SSH into one of your containers with:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
--container=CONTAINER
|
|
|
|
You can limit the allowed time to ssh. For example, to allow a key to be
|
|
used through 2019:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
--ssh-key-expiration="2020-01-01T00:00:00:00Z"
|
|
|
|
Or alternatively, allow access for the next two minutes:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
--ssh-key-expire-after=2m
|
|
|
|
To use the IP address of your remote VM (eg, for on-prem), you must also
|
|
specify the --region and --network flags:
|
|
|
|
$ gcloud alpha compute ssh 10.1.2.3 --region=us-central1 \
|
|
--network=default
|
|
|
|
POSITIONAL ARGUMENTS
|
|
[USER@]INSTANCE
|
|
Specifies the instance to SSH into.
|
|
|
|
USER specifies the username with which to SSH. If omitted, the user
|
|
login name is used. If using OS Login, USER will be replaced by the OS
|
|
Login user.
|
|
|
|
INSTANCE specifies the name of the virtual machine instance to SSH
|
|
into.
|
|
|
|
[-- SSH_ARGS ...]
|
|
Flags and positionals passed to the underlying ssh implementation.
|
|
|
|
The '--' argument must be specified between gcloud specific args on the
|
|
left and SSH_ARGS on the right. Example:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
-- -vvv -L 80:%INSTANCE%:80
|
|
|
|
FLAGS
|
|
--command=COMMAND
|
|
A command to run on the virtual machine.
|
|
|
|
Runs the command on the target instance and then exits.
|
|
|
|
--container=CONTAINER
|
|
The name or ID of a container inside of the virtual machine instance to
|
|
connect to. This only applies to virtual machines that are using a
|
|
Google Container-Optimized virtual machine image. For more information,
|
|
see https://cloud.google.com/compute/docs/containers.
|
|
|
|
--dry-run
|
|
Print the equivalent scp/ssh command that would be run to stdout,
|
|
instead of executing it.
|
|
|
|
--force-key-file-overwrite
|
|
If enabled, the gcloud command-line tool will regenerate and overwrite
|
|
the files associated with a broken SSH key without asking for
|
|
confirmation in both interactive and non-interactive environments.
|
|
|
|
If disabled, the files associated with a broken SSH key will not be
|
|
regenerated and will fail in both interactive and non-interactive
|
|
environments.
|
|
|
|
--plain
|
|
Suppress the automatic addition of ssh(1)/scp(1) flags. This flag is
|
|
useful if you want to take care of authentication yourself or use
|
|
specific ssh/scp features.
|
|
|
|
--ssh-flag=SSH_FLAG
|
|
Additional flags to be passed to ssh(1). It is recommended that flags
|
|
be passed using an assignment operator and quotes. Example:
|
|
|
|
$ gcloud alpha compute ssh example-instance --zone=us-central1-a \
|
|
--ssh-flag="-vvv" --ssh-flag="-L 80:localhost:80"
|
|
|
|
This flag will replace occurences of %USER%, %INSTANCE%, and %INTERNAL%
|
|
with their dereferenced values. For example, passing 80:%INSTANCE%:80
|
|
into the flag is equivalent to passing 80:162.222.181.197:80 to ssh(1)
|
|
if the external IP address of 'example-instance' is 162.222.181.197.
|
|
|
|
If connecting to the instance's external IP, then %INSTANCE% is
|
|
replaced with that, otherwise it is replaced with the internal IP.
|
|
%INTERNAL% is always replaced with the internal interface of the
|
|
instance.
|
|
|
|
--ssh-key-file=SSH_KEY_FILE
|
|
The path to the SSH key file. By default, this is
|
|
~/.ssh/google_compute_engine.
|
|
|
|
--strict-host-key-checking=STRICT_HOST_KEY_CHECKING
|
|
Override the default behavior of StrictHostKeyChecking for the
|
|
connection. By default, StrictHostKeyChecking is set to 'no' the first
|
|
time you connect to an instance, and will be set to 'yes' for all
|
|
subsequent connections. STRICT_HOST_KEY_CHECKING must be one of: yes,
|
|
no, ask.
|
|
|
|
--troubleshoot
|
|
If you can't connect to a virtual machine (VM) instance using SSH, you
|
|
can investigate the problem using the --troubleshoot flag:
|
|
|
|
$ gcloud alpha compute ssh VM_NAME --zone=ZONE \
|
|
--troubleshoot [--tunnel-through-iap]
|
|
|
|
The troubleshoot flag runs tests and returns recommendations for the
|
|
following types of issues:
|
|
◆ VM status
|
|
◆ Network connectivity
|
|
◆ User permissions
|
|
◆ Virtual Private Cloud (VPC) settings
|
|
◆ VM boot
|
|
|
|
If you specify the --tunnel-through-iap flag, the tool also checks IAP
|
|
port forwarding.
|
|
|
|
--zone=ZONE
|
|
Zone of the instance to connect to. If not specified and the
|
|
compute/zone property isn't set, you might be prompted to select a zone
|
|
(interactive mode only).
|
|
|
|
To avoid prompting when this flag is omitted, you can set the
|
|
compute/zone property:
|
|
|
|
$ gcloud config set compute/zone ZONE
|
|
|
|
A list of zones can be fetched by running:
|
|
|
|
$ gcloud compute zones list
|
|
|
|
To unset the property, run:
|
|
|
|
$ gcloud config unset compute/zone
|
|
|
|
Alternatively, the zone can be stored in the environment variable
|
|
CLOUDSDK_COMPUTE_ZONE.
|
|
|
|
At most one of these can be specified:
|
|
|
|
--internal-ip
|
|
Connect to instances using their internal IP addresses rather than
|
|
their external IP addresses. Use this to connect from one instance to
|
|
another on the same VPC network, over a VPN connection, or between
|
|
two peered VPC networks.
|
|
|
|
For this connection to work, you must configure your networks and
|
|
firewall to allow SSH connections to the internal IP address of the
|
|
instance to which you want to connect.
|
|
|
|
To learn how to use this flag, see
|
|
https://cloud.google.com/compute/docs/instances/connecting-advanced#sshbetweeninstances.
|
|
|
|
--tunnel-through-iap
|
|
Tunnel the ssh connection through Cloud Identity-Aware Proxy for TCP
|
|
forwarding.
|
|
|
|
To learn more, see the IAP for TCP forwarding documentation
|
|
(https://cloud.google.com/iap/docs/tcp-forwarding-overview).
|
|
|
|
--network=NETWORK
|
|
Configures the VPC network to use when connecting via IP address or
|
|
FQDN.
|
|
|
|
--region=REGION
|
|
Configures the region to use when connecting via IP address or FQDN.
|
|
|
|
--dest-group=DEST_GROUP
|
|
Configures the destination group to use when connecting via IP address
|
|
or FQDN.
|
|
|
|
At most one of these can be specified:
|
|
|
|
--ssh-key-expiration=SSH_KEY_EXPIRATION
|
|
The time when the ssh key will be valid until, such as
|
|
"2017-08-29T18:52:51.142Z." This is only valid if the instance is not
|
|
using OS Login. See $ gcloud topic datetimes for information on time
|
|
formats.
|
|
|
|
--ssh-key-expire-after=SSH_KEY_EXPIRE_AFTER
|
|
The maximum length of time an SSH key is valid for once created and
|
|
installed, e.g. 2m for 2 minutes. See $ gcloud topic datetimes for
|
|
information on duration formats.
|
|
|
|
GCLOUD WIDE FLAGS
|
|
These flags are available to all commands: --access-token-file, --account,
|
|
--billing-project, --configuration, --flags-file, --flatten, --format,
|
|
--help, --impersonate-service-account, --log-http, --project, --quiet,
|
|
--trace-token, --user-output-enabled, --verbosity.
|
|
|
|
Run $ gcloud help for details.
|
|
|
|
NOTES
|
|
This command is currently in alpha and might change without notice. If this
|
|
command fails with API permission errors despite specifying the correct
|
|
project, you might be trying to access an API with an invitation-only early
|
|
access allowlist. These variants are also available:
|
|
|
|
$ gcloud compute ssh
|
|
|
|
$ gcloud beta compute ssh
|
|
|