--- title: SSH Access description: Access your sandboxes using SSH token-based authentication. --- Daytona provides SSH access to your sandboxes using token-based authentication. This allows you to connect from local terminals, IDEs, and development tools without installing additional software. ## Access from Dashboard Create an SSH access token directly from the [Daytona Dashboard ↗](https://app.daytona.io/dashboard/sandboxes). 1. Go to [Sandboxes ↗](https://app.daytona.io/dashboard/sandboxes) 2. Locate the sandbox you want to create an SSH access token for 3. Click the sandbox options menu (**⋮**) 4. Select 5. Set the expiration time (defaults to 60 minutes) 6. Click Daytona generates a token and displays it in the modal. Copy the token and use it to connect to your sandbox. ## Access via CLI Daytona provides a CLI command to create an SSH access token for a sandbox: ```shell daytona create ``` When you create a sandbox, Daytona displays the SSH command automatically in the output: ```text Sandbox '' created successfully Connect via SSH: daytona ssh Open the Web Terminal: https://22222-.proxy.daytona.work ``` To SSH into an existing sandbox, use the following command: ```bash daytona ssh --expires 60 ``` ## Access via token You can create SSH access tokens programmatically. The token can then be used to connect manually: ```python from daytona import Daytona daytona = Daytona() sandbox = daytona.get("sandbox-abc123") # Create SSH access token ssh_access = sandbox.create_ssh_access(expires_in_minutes=60) print(f"SSH Token: {ssh_access.token}") ``` ```typescript import { Daytona } from '@daytona/sdk' const daytona = new Daytona() const sandbox = await daytona.get('sandbox-abc123') // Create SSH access token const sshAccess = await sandbox.createSshAccess(60) console.log(`SSH Token: ${sshAccess.token}`) ``` ```ruby require 'daytona' daytona = Daytona::Daytona.new sandbox = daytona.get('sandbox-abc123') # Create SSH access token ssh_access = sandbox.create_ssh_access(expires_in_minutes: 60) puts "SSH Token: #{ssh_access.token}" ``` ```bash curl 'https://app.daytona.io/api/sandbox/{sandboxId}/ssh-access?expiresInMinutes=60' \ --request POST \ --header 'Authorization: Bearer ' ``` To connect to your sandbox, use the following command: ```bash ssh @ssh.app.daytona.io ``` ## Connect with VS Code You can connect VS Code directly to your sandbox using the Remote SSH extension. 1. Install the [Remote Explorer extension ↗](https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer) 2. Add a new SSH connection 3. When prompted for the SSH connection URL, paste the SSH command from above For more information, see the [VS Code Remote SSH documentation ↗](https://code.visualstudio.com/docs/remote/ssh). ## Connect with JetBrains IDEs JetBrains Gateway provides remote development support for connecting to your sandbox. 1. Download [JetBrains Gateway ↗](https://www.jetbrains.com/remote-development/gateway/) 2. Add a new connection 3. When prompted for the SSH connection URL, paste the SSH command from above 4. Select the IDE to install in your sandbox ## Token management ### Expiration SSH access tokens expire automatically after 60 minutes. You can specify a custom expiration time when creating the token using the `expires_in_minutes` parameter. ### Revoke token Revoke SSH access tokens before expiry: ```python # Revoke specific SSH access token for the sandbox sandbox.revoke_ssh_access(token="specific-token") ``` ```typescript // Revoke specific SSH access token for the sandbox await sandbox.revokeSshAccess('specific-token') ``` ```ruby # Revoke specific SSH access token for the sandbox sandbox.revoke_ssh_access(token: 'specific-token') ``` ```bash # Revoke specific SSH access token curl 'https://app.daytona.io/api/sandbox/{sandboxId}/ssh-access?token=specific-token' \ --request DELETE \ --header 'Authorization: Bearer ' # Revoke all SSH access for the sandbox curl 'https://app.daytona.io/api/sandbox/{sandboxId}/ssh-access' \ --request DELETE \ --header 'Authorization: Bearer ' ```