Debugging GitHub Actions workflows can be a frustrating experience. We’ve all been there - you push a change to fix your workflow, wait for minutes, only to see it fail again, with limited logs that don’t fully explain the issue. This trial-and-error approach is not only time consuming but also inefficient. But what if there was a better way to debug your workflows in real-time?Ubicloud introduces a game-changing solution: the ability to SSH into managed ephemeral Ubicloud runners during workflow execution. With the ubicloud/ssh-runner action, you can set up SSH access and connect to the runner while your workflow is executing. No more guesswork or endless commit cycles. Simply attach, debug issues in real-time, and move on—all within the same workflow run.
That’s it! This action will enable SSH access using the provided public key.When you run this workflow, you’ll see the following output in the logs:
Waiting for 30 minutes to allow SSH access...SSH Connection Information:User: runnerIPv4: 188.40.199.63Command:ssh runner@188.40.199.63
Simply copy the SSH command from the logs, open your favorite terminal, and connect. You’ll be in the same environment as your CI job, letting you inspect files, run commands, and debug issues in real time.Remember that each Ubicloud runner is ephemeral. Once the wait-minutes duration is reached after the job is completed, the VM is destroyed, along with its disk data.
The ubicloud/ssh-runner action is open source. Feel free to review, contribute, or open issues if you run into any snags.
You can also set up SSH access only for failed jobs:
By allowing SSH access to your Ubicloud runners, you can debug your GitHub Actions workflows in real-time. This not only saves time but also provides a more comprehensive understanding of the issues at hand. Say goodbye to the days of blind debugging and repeated pushes. Embrace the future of efficient workflow debugging with Ubicloud.For more information, visit the ubicloud/ssh-runner repository.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Ubicloud Documentation","colors":{"primary":"#FF5C12","light":"#FF5C12","dark":"#FF5C12"},"logo":{"light":"https://mintcdn.com/ubicloud-00f14c0d/vmC7dwIOY4T5jXQn/logo/light.svg?fit=max\u0026auto=format\u0026n=vmC7dwIOY4T5jXQn\u0026q=85\u0026s=075625c3e84de3af17fb505613f44036","dark":"https://mintcdn.com/ubicloud-00f14c0d/vmC7dwIOY4T5jXQn/logo/dark.svg?fit=max\u0026auto=format\u0026n=vmC7dwIOY4T5jXQn\u0026q=85\u0026s=5375bd4bf91a12aa59fb51301aefda5e","href":"https://www.ubicloud.com/"},"favicon":"https://mintcdn.com/ubicloud-00f14c0d/dkQS7vFTPxPT-89t/favicon.png?fit=max\u0026auto=format\u0026n=dkQS7vFTPxPT-89t\u0026q=85\u0026s=37ea392f9ee6d44c7a53a31bcf935665","appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"https://www.ubicloud.com/docs/about/support","label":"Support"},{"href":"https://console.ubicloud.com/login","label":"Sign In"}],"primary":{"type":"github","href":"https://github.com/ubicloud/ubicloud"}},"footer":{"socials":{"github":"https://github.com/ubicloud/ubicloud","x":"https://x.com/UbicloudHQ","linkedin":"https://linkedin.com/company/ubicloud"}},"seo":{"metatags":{"canonical":"https://www.ubicloud.com/docs"}},"fonts":{"family":"Be Vietnam Pro"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ubicloud-00f14c0d","hasAudioNarration":false,"actualSubdomain":"ubicloud-00f14c0d","customDomains":["ubicloud.com"],"gitSource":{"type":"github","owner":"ubicloud","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0e716a716ea245f81c4b7","collectionId":"7d1a760e-ce2b-48ee-bc92-5f34d177888d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0e716a716ea245f81c4b7"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0e716a716ea245f81c4b7","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API Reference","count":133},{"language":"default","tag":"Documentation","count":55},{"language":"default","tag":"Changelog","count":44},{"language":"default","tag":"Postgres Database","count":30},{"language":"default","tag":"Managed PostgreSQL","count":15},{"language":"default","tag":"Kubernetes Cluster","count":15},{"language":"default","tag":"Virtual Machine","count":11},{"language":"default","tag":"Load Balancer","count":10},{"language":"default","tag":"Machine Image","count":10},{"language":"default","tag":"Managed Kubernetes","count":9}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":""}],"page":{"pagePath":"github-actions-integration/debug-workflow-with-ssh","slug":"/github-actions-integration/debug-workflow-with-ssh","pageMetadata":{"title":"Debug Workflow with SSH","description":null,"href":"/github-actions-integration/debug-workflow-with-ssh"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Debugging GitHub Actions workflows can be a frustrating experience. We’ve all been there - you push a change to fix your workflow, wait for minutes, only to see it fail again, with limited logs that don’t fully explain the issue. This trial-and-error approach is not only time consuming but also inefficient. But what if there was a better way to debug your workflows in real-time?`}),`\n`,_jsxs(_components.p,{children:[`Ubicloud introduces a game-changing solution: the ability to SSH into managed ephemeral Ubicloud runners during workflow execution. With the `,_jsx(_components.a,{href:`https://github.com/ubicloud/ssh-runner`,children:`ubicloud/ssh-runner`}),` action, you can set up SSH access and connect to the runner while your workflow is executing. No more guesswork or endless commit cycles. Simply attach, debug issues in real-time, and move on—all within the same workflow run.`]}),`\n`,_jsx(Heading,{level:`2`,id:`usage`,children:`Usage`}),`\n`,_jsx(_components.p,{children:`To use this feature, add the following step to your workflow as the first step:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Setup SSH access`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` uses`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ubicloud/ssh-runner@v2`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` public-ssh-key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.SSH_PUBLIC_KEY }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` wait-minutes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Optional, default is 10 minutes`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`That’s it! This action will enable SSH access using the provided public key.`}),`\n`,_jsx(_components.p,{children:`When you run this workflow, you’ll see the following output in the logs:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Waiting for 30 minutes to allow SSH access...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SSH Connection Information:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`User: runner`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`IPv4: 188.40.199.63`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Command:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ssh runner@188.40.199.63`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Simply copy the SSH command from the logs, open your favorite terminal, and connect. You’ll be in the same environment as your CI job, letting you inspect files, run commands, and debug issues in real time.`}),`\n`,_jsxs(_components.p,{children:[`Remember that each Ubicloud runner is ephemeral. Once the `,_jsx(_components.code,{children:`wait-minutes`}),` duration is reached after the job is completed, the VM is destroyed, along with its disk data.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`https://github.com/ubicloud/ssh-runner`,children:`ubicloud/ssh-runner`}),` action is open source. Feel free to review, contribute, or open issues if you run into any snags.`]})}),`\n`,_jsx(_components.p,{children:`You can also set up SSH access only for failed jobs:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`- `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Setup SSH access`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ failure() }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` uses`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ubicloud/ssh-runner@v2`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` public-ssh-key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.SSH_PUBLIC_KEY }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` wait-minutes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Store your private SSH key securely. A short debugging session can save massive time, but best practices and security guidelines always apply.`})}),`\n`,_jsx(Heading,{level:`2`,id:`conclusion`,children:`Conclusion`}),`\n`,_jsx(_components.p,{children:`By allowing SSH access to your Ubicloud runners, you can debug your GitHub Actions workflows in real-time. This not only saves time but also provides a more comprehensive understanding of the issues at hand. Say goodbye to the days of blind debugging and repeated pushes. Embrace the future of efficient workflow debugging with Ubicloud.`}),`\n`,_jsxs(_components.p,{children:[`For more information, visit the `,_jsx(_components.a,{href:`https://github.com/ubicloud/ssh-runner`,children:`ubicloud/ssh-runner`}),` repository.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Debug Workflow with SSH","description":null,"href":"/github-actions-integration/debug-workflow-with-ssh"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Usage","slug":"usage","depth":2,"children":[]},{"title":"Conclusion","slug":"conclusion","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/ubicloud-00f14c0d/64d3bed5d5d8ce4a/analytics.js"],"subdomain":"ubicloud-00f14c0d","siteName":"Ubicloud Documentation","title":"Debug Workflow with SSH - Ubicloud Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T18:10:20.051Z","originalFileLocation":"github-actions-integration/debug-workflow-with-ssh.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Ubicloud Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Debug Workflow with SSH - Ubicloud Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Ubicloud Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ubicloud-00f14c0d.mintlify.app/_mintlify/api/og/v2?division=Github+Actions+Integration\u0026amp;title=Debug+Workflow+with+SSH\u0026amp;theme=3603e8c6c1a1ad8e0824fefd\u0026amp;signature=dfb04b39dba67c150743375d7f5cd8a620eb710d4770bd658d741b3205e2c7d3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Debug Workflow with SSH - Ubicloud Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ubicloud-00f14c0d.mintlify.app/_mintlify/api/og/v2?division=Github+Actions+Integration\u0026amp;title=Debug+Workflow+with+SSH\u0026amp;theme=3603e8c6c1a1ad8e0824fefd\u0026amp;signature=dfb04b39dba67c150743375d7f5cd8a620eb710d4770bd658d741b3205e2c7d3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/ubicloud-00f14c0d/ebQQJjAgLtKwwgAK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Ubicloud Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF5C12\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/github-actions-integration/debug-workflow-with-ssh.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.ubicloud.com/#organization\",\"name\":\"Ubicloud Documentation\",\"url\":\"https://www.ubicloud.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ubicloud-00f14c0d/vmC7dwIOY4T5jXQn/logo/light.svg?fit=max\u0026auto=format\u0026n=vmC7dwIOY4T5jXQn\u0026q=85\u0026s=075625c3e84de3af17fb505613f44036\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.ubicloud.com/docs#website\",\"name\":\"Ubicloud Documentation\",\"url\":\"https://www.ubicloud.com/docs\",\"publisher\":{\"@id\":\"https://www.ubicloud.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh#webpage\",\"url\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh\",\"name\":\"Debug Workflow with SSH\",\"dateModified\":\"2026-10-09T18:10:20.051Z\",\"isPartOf\":{\"@id\":\"https://www.ubicloud.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Github Actions Integration\",\"item\":\"https://www.ubicloud.com/docs/github-actions-integration/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Debug Workflow with SSH\",\"item\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh#article\",\"headline\":\"Debug Workflow with SSH\",\"name\":\"Debug Workflow with SSH\",\"url\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh\",\"mainEntityOfPage\":{\"@id\":\"https://www.ubicloud.com/docs/github-actions-integration/debug-workflow-with-ssh#webpage\"},\"dateModified\":\"2026-10-09T18:10:20.051Z\",\"publisher\":{\"@id\":\"https://www.ubicloud.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.ubicloud.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Ubicloud Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Ubicloud Documentation","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":" ","pages":[{"title":"Ubicloud Overview","sidebarTitle":"Overview","href":"/overview"}]},{"group":"Quickstart","pages":[{"title":"Managed Services","href":"/quick-start/managed-services"},{"title":"Build Your Own Cloud","href":"/quick-start/build-your-own-cloud"},{"title":"Command Line Interface","sidebarTitle":"CLI","href":"/quick-start/cli"}]},{"group":"AI Inference","pages":[{"title":"Inference Endpoints","href":"/inference/endpoint"},{"title":"Inference API Keys","href":"/inference/api-key"},{"title":"Playground","href":"/inference/playground"},{"title":"Tutorial: Chat Completion (Python)","href":"/inference/chat-completion-python"}]},{"group":"Github Actions Integration","pages":[{"title":"GitHub Actions Quickstart","sidebarTitle":"Quickstart","href":"/github-actions-integration/quickstart"},{"title":"Runner Types","href":"/github-actions-integration/runner-types"},{"title":"Use Premium Runners","href":"/github-actions-integration/use-premium-runners"},{"title":"Migrate to Arm runners","href":"/github-actions-integration/migrate-to-arm-runners"},{"title":"Ubicloud Cache","description":null,"href":"/github-actions-integration/ubicloud-cache"},{"title":"Debug Workflow with SSH","href":"/github-actions-integration/debug-workflow-with-ssh"},{"title":"GitHub Actions Price-Performance","sidebarTitle":"Price-Performance","description":null,"href":"/github-actions-integration/price-performance"},{"title":"GitHub Actions Security","sidebarTitle":"Security","href":"/github-actions-integration/security"}]},{"group":"Managed PostgreSQL","pages":[{"title":"PostgreSQL Overview","sidebarTitle":"Overview","href":"/managed-postgresql/overview"},{"title":"Connection","href":"/managed-postgresql/connection"},{"title":"Metrics","href":"/managed-postgresql/metrics"},{"title":"Logs","href":"/managed-postgresql/logs"},{"title":"Networking","href":"/managed-postgresql/networking"},{"title":"PostgreSQL Security","sidebarTitle":"Security","href":"/managed-postgresql/security"},{"title":"Resizing","href":"/managed-postgresql/resize"},{"title":"High Availability","href":"/managed-postgresql/high-availability"},{"title":"Read Replicas","href":"/managed-postgresql/read-replicas"},{"title":"Backup and Restore","href":"/managed-postgresql/backup-and-restore"},{"title":"Version Upgrades","href":"/managed-postgresql/upgrade"},{"title":"Configuration and Settings","href":"/managed-postgresql/configuration-and-settings"},{"title":"Extensions","href":"/managed-postgresql/extensions"},{"title":"Bring Your Own Cloud - AWS","href":"/managed-postgresql/byoc"},{"title":"PostgreSQL Price-Performance","sidebarTitle":"Price-Performance","href":"/managed-postgresql/price-performance"}]},{"group":"Managed Kubernetes","pages":[{"title":"Kubernetes Overview","sidebarTitle":"Overview","href":"/managed-kubernetes/overview"},{"title":"Kubernetes Quickstart","sidebarTitle":"Quickstart","href":"/managed-kubernetes/quickstart"},{"title":"Expose an Application Securely Using TLS","href":"/managed-kubernetes/expose-application-using-tls"},{"title":"Kubernetes Firewall","sidebarTitle":"Firewall","href":"/managed-kubernetes/firewall"},{"title":"Resize Your Cluster","href":"/managed-kubernetes/resize-cluster"},{"title":"Upgrade Your Cluster","href":"/managed-kubernetes/upgrade"},{"title":"Persistent Volumes","href":"/managed-kubernetes/persistent-volumes"},{"title":"Autoscaling","href":"/managed-kubernetes/autoscale"},{"title":"Tutorial: Self-Hosting Windmill on Ubicloud for Production","href":"/managed-kubernetes/windmill-tutorial"}]},{"group":"Machine Images","pages":[{"title":"Machine Images Overview","sidebarTitle":"Overview","href":"/machine-images/overview"},{"title":"Machine Images Quickstart","sidebarTitle":"Quickstart","href":"/machine-images/quickstart"},{"title":"Generalizing an Image","href":"/machine-images/generalize"}]},{"group":"Networking","pages":[{"title":"Private Subnet","href":"/networking/private-subnet"},{"title":"Networking Firewall","sidebarTitle":"Firewall","href":"/networking/firewall"},{"title":"Load Balancer","href":"/networking/load-balancer"},{"title":"Public IP Ranges","href":"/networking/public-ip-ranges"}]},{"group":"Security","pages":[{"title":"Security Overview","sidebarTitle":"Overview","href":"/security/overview"},{"title":"Authorization","href":"/security/authorization"},{"title":"Trust Center","url":"https://trust.ubicloud.com","href":"/security/trust-center"}]},{"group":"About","pages":[{"title":"Pricing","href":"/about/pricing"},{"title":"Regions","href":"/about/regions"},{"title":"Support","href":"/about/support"},{"title":"Ubicloud Privacy Notice","sidebarTitle":"Privacy Policy","href":"/about/privacy-policy"},{"title":"Terms of Service","href":"/about/terms-of-service"}]}]},{"anchor":"API Reference","icon":"terminal","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"anchor":"Architecture","icon":"lightbulb","pages":[{"title":"Architecture","href":"/architecture/control-and-data-plane"}]},{"anchor":"Changelog","icon":"list-ol","pages":[{"title":"Changelog","href":"/changelog/2026-09"}]}]},"title":"Debug Workflow with SSH - Ubicloud Documentation","buildId":"dpl_3rfzHPCtRhDFBbetXZ3oLkN5tjmA","deploymentId":"dpl_3rfzHPCtRhDFBbetXZ3oLkN5tjmA","dynamics":[],"chunks":[]}