Skip to content

SSH Access to a Host via Teleport

Use this guide to initiate an SSH session via Teleport using the tsh CLI. If you prefer, you can alternatively open a session directly through the web UI.

  1. Log in to Teleport:
Terminal window
tsh login --proxy=production.teleport.gitlab.net
  1. Identify the name of the node:

The name of the Teleport node must be provided in order to log in. This is usually equal to the hostname, but in some cases it may be the fully-qualified domain name.

Terminal window
tsh ls --search redis # search by node name
tsh ls # all hosts
tsh ls env=gstg # filter by environment
tsh ls env=gprd
  1. Request access to the resource:
Terminal window
tsh request create \
--resource=<node name> \
--reason="<GitLab issue URL / ZenDesk ticket URL>"
  1. Ask an Engineering or Security manager to review the request. You may direct them to the Teleport Approver Workflow in case they are unfamiliar with the process.

  2. Once approved, log in with tsh using the request ID to assume the role:

Terminal window
tsh login --request-id=<request-id>
  1. Connect to the host:
Terminal window
tsh ssh <username>@<hostname>
  • Access expires after 12 hours. Renew it before or after expiration using the same request process.
  • Learn about tsh’s features in Teleport’s docs.
  • For help with Teleport or the approval process, ask in #security_help.
  • To report a Teleport bug, open an issue with Infrastructure Security.

tsh request create will wait for approval and return once the request is approved, denied, or expires.

If it times out before a decision, check #teleport-requests slack channel or the Teleport Web UI for the request ID — you don’t need to re-request if it was approved.

failed to add one or more keys to the agent

Section titled “failed to add one or more keys to the agent”

See getting_access.md — Troubleshooting.

Terminal window
tsh --debug ssh <user>@<hostname>