207* 點擊**在差異中逐一檢視**以開啟差異檢視,並逐一檢視各項結果。位於目前差異中的結果會顯示在其對應的行,您可以在那裡點擊**修正此項**或將其關閉。207* 點擊**在差異中逐一檢視**以開啟差異檢視,並逐一檢視各項結果。位於目前差異中的結果會顯示在其對應的行,您可以在那裡點擊**修正此項**或將其關閉。
208* 點擊**套用修正**以要求 Claude 修正仍未處理的結果。208* 點擊**套用修正**以要求 Claude 修正仍未處理的結果。
209 209
210在任何工作階段中,您也可以在提示詞輸入框中要求 Claude 修正審查發現的問題。若要了解 `/code-review` 檢查的內容及其接受的引數,請參閱[在本機審查差異](/docs/zh-TW/code-review#review-a-diff-locally)。210在任何工作階段中,您也可以在提示詞輸入框中要求 Claude 修正審查發現的問題。若要了解 `/code-review` 檢查的內容及其接受的引數,請參閱[使用 `/code-review` 在本機審查](/docs/zh-TW/code-review-local)。
211 211
212<h3 id="monitor-pull-request-status">212<h3 id="monitor-pull-request-status">
213 監控 pull request 狀態213 監控 pull request 狀態
785</Tabs>785</Tabs>
786 786
787<h2 id="environment-configuration">787<h2 id="environment-configuration">
788 環境配置788 環境設定
789</h2>789</h2>
790 790
791您在[開始會話](#start-a-session)時選擇的環境決定了 Claude 執行的位置以及您如何連接:791您在[啟動工作階段](#start-a-session)時選擇的環境,決定了 Claude 在何處執行以及您如何連線:
792 792
793* **Local**:在您的機器上執行,直接存取您的檔案793* **Local**:在您的機器上執行,可直接存取您的檔案
794* **Cloud**:在 Anthropic 管理的基礎設施上執行。即使您關閉應用程式,會話也會繼續。794* **Cloud**:預設在 Anthropic 管理的基礎架構上執行。即使您關閉應用程式,工作階段仍會繼續。
795* **SSH**:在您透過 SSH 連接的遠端機器上執行,例如您自己的伺服器、雲端虛擬機器或開發容器。執行中的任務可以[在 Desktop 中斷連線時繼續進行](#keep-a-task-running-while-desktop-is-disconnected),但使用 Claude 帳戶時,它可能會在登入過期時停止。795* **SSH**:在您透過 SSH 連線的遠端機器上執行,例如您自己的伺服器、雲端 VM 或開發容器。正在執行的任務可以[在 Desktop 中斷連線時繼續進行](#keep-a-task-running-while-desktop-is-disconnected),但使用 Claude 帳戶時,任務可能會在其登入過期時停止。
796* **WSL** (Windows):在您機器上的 [WSL 2 發行版](/docs/zh-TW/desktop-wsl)內執行,使用其 Linux 工具鏈和原生路徑796* **WSL**(Windows):在您機器上的 [WSL 2 發行版](/docs/zh-TW/desktop-wsl)內執行,使用其 Linux 工具鏈和原生路徑
797 797
798<h3 id="local-sessions">798<h3 id="local-sessions">
799 本機會話799 本機工作階段
800</h3>800</h3>
801 801
802桌面應用程式並不總是繼承您完整的 shell 環境。在 macOS 上,當您從 Dock 或 Finder 啟動應用程式時,它會讀取您的 shell 設定檔(如 `~/.zshrc` 或 `~/.bashrc`),為 Claude Code 提供 `PATH` 和一組固定的 Claude Code 變數,但不包括您在那裡匯出的其他變數。在 Windows 上,應用程式繼承使用者和系統環境變數,但不讀取 PowerShell 設定檔。802桌面應用程式不一定會繼承您完整的 shell 環境。在 macOS 上,當您從 Dock 或 Finder 啟動應用程式時,它會讀取您的 shell 設定檔(例如 `~/.zshrc` 或 `~/.bashrc`),以提供 Claude Code `PATH` 和一組固定的 Claude Code 變數,但不會提供您在其中匯出的其他變數。在 Windows 上,應用程式會繼承使用者和系統環境變數,但不會讀取 PowerShell 設定檔。
803 803
804若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/docs/zh-TW/env-vars)。804若要在任何平台上為本機工作階段和開發伺服器設定環境變數,請開啟提示詞方塊中的環境下拉選單,將滑鼠游標停在 **Local** 上,然後按一下齒輪圖示以開啟本機環境編輯器。您在此儲存的變數會加密儲存在您的機器上,並套用至您啟動的每個本機工作階段和預覽伺服器。您也可以將變數加入 `~/.claude/settings.json` 檔案中的 `env` 鍵,但這些變數只會傳遞給 Claude 工作階段,而不會傳遞給開發伺服器。如需支援的變數完整清單,請參閱[環境變數](/docs/zh-TW/env-vars)。
805 805
806[延伸思考](/docs/zh-TW/model-config#extended-thinking)預設啟用,這改進了複雜推理任務的效能,但使用額外的 token。在 Anthropic API 上,在本機環境編輯器中將 `MAX_THINKING_TOKENS` 設定為 `0` 以關閉思考;這對 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型沒有影響,它們始終使用延伸思考。在 Anthropic API 上關閉思考後,Claude Code 會傳送 effort `high` 而不是更高的級別給它知道[不接受該組合](/docs/zh-TW/errors#effort-isnt-available-with-thinking-turned-off)的模型,例如 Opus 5。806[延伸思考](/docs/zh-TW/model-config#extended-thinking)預設為啟用,可提升複雜推理任務的效能,但會使用額外的 token。在 Anthropic API 上,於本機環境編輯器中將 `MAX_THINKING_TOKENS` 設為 `0` 即可關閉思考;這對 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型沒有作用,因為這些模型一律使用延伸思考。在 Anthropic API 上關閉思考時,對於 Claude Code 已知[不接受該組合](/docs/zh-TW/errors#effort-isnt-available-with-thinking-turned-off)的模型(例如 Opus 5),Claude Code 會傳送 effort `high`,而非更高的等級。
807 807
808在具有[自適應推理](/docs/zh-TW/model-config#adjust-effort-level)的模型上,對於正值的 `MAX_THINKING_TOKENS`,Claude Code 會忽略該數值本身,因為改由自適應推理控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,將 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 設定為 `1` 以使用固定思考預算;Fable 模型、Sonnet 5 及更新版本、Haiku 5.5,以及 Opus 4.7 及更新版本始終使用自適應推理,沒有固定預算模式。808在具有[自適應推理](/docs/zh-TW/model-config#adjust-effort-level)的模型上,Claude Code 會忽略正值 `MAX_THINKING_TOKENS` 中的數字本身,因為改由自適應推理控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,將 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 設為 `1` 即可使用固定的思考預算;Fable 模型、Sonnet 5 及更新版本、Haiku 5.5,以及 Opus 4.7 及更新版本一律使用自適應推理,沒有固定預算模式。
809 809
810<h4 id="local-sessions-on-managed-devices">810<h4 id="local-sessions-on-managed-devices">
811 受管設備上的本機會話811 受管裝置上的本機工作階段
812</h4>812</h4>
813 813
814您的管理員可以使用 [`disableDesktopLocalSessions` 受管設定](#managed-settings)關閉本機會話。當他們這樣做時,**Local** 會保留在環境下拉式選單中,但會呈灰色且無法選擇,並顯示工具提示說您的組織已關閉它,在 Windows 上,[WSL](/docs/zh-TW/desktop-wsl) 項目(其在受管設備上的可用性[由單獨管理](/docs/zh-TW/admin-setup#wsl-sessions-in-claude-code-desktop))也會以相同方式呈灰色。新會話預設為第一個 SSH 連線(如果已配置),如果您嘗試繼續現有會話,Desktop 會顯示一條訊息,說明此設備上不提供本機會話。改為選擇 [SSH](#ssh-sessions) 或 [Cloud](#cloud-sessions) 環境,或聯絡您的 IT 團隊。814您的管理員可以透過 [`disableDesktopLocalSessions` 受管設定](#managed-settings)關閉本機工作階段。若管理員已這樣做,**Local** 仍會留在環境下拉選單中,但會呈現灰色且無法選取,並顯示工具提示說明您的組織已將其關閉;在 Windows 上,[WSL](/docs/zh-TW/desktop-wsl) 項目(其在受管裝置上的可用性[另行管理](/docs/zh-TW/admin-setup#wsl-sessions-in-claude-code-desktop))也會以相同方式呈現灰色。若已設定 SSH 連線,新工作階段預設會使用第一個 SSH 連線;若您嘗試繼續現有的工作階段,Desktop 會顯示訊息,說明此裝置無法使用本機工作階段。請改為選擇 [SSH](#ssh-sessions) 或[雲端](#cloud-sessions)環境,或聯絡您的 IT 團隊。
815 815
816<h3 id="cloud-sessions">816<h3 id="cloud-sessions">
817 雲端會話817 雲端工作階段
818</h3>818</h3>
819 819
820雲端會話即使您關閉應用程式也會在背景繼續。使用情況計入您的[訂閱計畫限制](/docs/zh-TW/costs),沒有單獨的計算費用。820即使您關閉應用程式,雲端工作階段仍會在背景繼續執行。使用量會計入您的[訂閱方案限制](/docs/zh-TW/costs),不另外收取運算費用。
821 821
822您可以建立具有不同網路存取級別和環境變數的自訂雲端環境。若要管理它們,請在提示框中開啟環境下拉式選單並選擇 **Cloud**:822您可以建立具有不同網路存取層級和環境變數的自訂雲端環境。若要管理這些環境,請開啟提示詞方塊中的環境下拉選單,然後選取 **Cloud**:
823 823
824* **Add an environment**:選擇 **Add cloud environment**824* **新增環境**:選取 **Add cloud environment**
825* **Edit or archive one of your own environments**:將滑鼠懸停在它上面並點擊齒輪圖示825* **編輯或封存您自己的其中一個環境**:將滑鼠游標停在該環境上,然後按一下齒輪圖示
826 826
827有關配置網路存取和環境變數的詳細資訊,請參閱[配置雲端環境](/docs/zh-TW/cloud-environments)。827如需設定網路存取和環境變數的詳細資訊,請參閱[設定雲端環境](/docs/zh-TW/cloud-environments)。
828 828
829<h3 id="ssh-sessions">829<h3 id="ssh-sessions">
830 SSH 會話830 SSH 工作階段
831</h3>831</h3>
832 832
833SSH 會話可讓您在遠端機器上執行 Claude Code,同時使用桌面應用程式作為您的介面。這對於使用存在於雲端虛擬機器、開發容器或具有特定硬體或相依性的伺服器上的程式碼庫很有用。833SSH 工作階段可讓您在遠端機器上執行 Claude Code,同時使用桌面應用程式作為介面。這對於處理位於雲端 VM、開發容器,或具有特定硬體或相依性的伺服器上的程式碼庫很有用。
834 834
835<Note>835<Note>
836 如果您透過[第三方供應商](/docs/zh-TW/third-party-integrations)使用 Desktop,SSH 工作階段需要另外設定。請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。836 如果您搭配[第三方供應商](/docs/zh-TW/third-party-integrations)使用 Desktop,SSH 工作階段需要另外設定。請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。
837</Note>837</Note>
838 838
839若要新增 SSH 連線,請在開始工作階段前於提示詞輸入框中開啟環境下拉式選單,然後選擇 **SSH > Add SSH connection…** 並填寫連線詳細資訊:839若要新增 SSH 連線,請在啟動工作階段之前開啟提示詞方塊中的環境下拉選單,然後選取 **SSH > Add SSH connection…** 並填寫連線詳細資料:
840 840
841* **Name**:此連線的友善標籤841* **Name**:此連線的易記標籤
842* **SSH host**:`user@hostname` 或在 `~/.ssh/config` 中定義的主機842* **SSH host**:`user@hostname` 或 `~/.ssh/config` 中定義的主機
843* **SSH port**:如果留空則預設為 22,或使用您的 SSH 設定中的連接埠843* **SSH port**:若留空則預設為 22,或使用您 SSH 設定中的連接埠
844* **SSH key (optional)**:您的私鑰的路徑,例如 `~/.ssh/id_ed25519`。留空以使用您的 SSH 設定或 SSH agent。844* **SSH key (optional)**:您私密金鑰的路徑,例如 `~/.ssh/id_ed25519`。留空則使用您的 SSH 設定或 SSH agent。
845* **Worktree folder**:遠端機器上的資料夾,例如 `~/worktrees`,新工作階段會在此建立其 worktree。留空以使用[遠端機器的預設值](#choose-where-ssh-session-worktrees-go)。845* **Worktree folder**:遠端機器上的資料夾,例如 `~/worktrees`,新工作階段會在其中建立 worktree。留空則使用[遠端機器的預設值](#choose-where-ssh-session-worktrees-go)。
846 846
847新增後,連線會出現在環境下拉式選單的 **SSH** 下方。選擇它以在該機器上啟動工作階段。Claude 在遠端機器上執行,可存取其檔案和工具。847新增後,連線會出現在環境下拉選單的 **SSH** 下方。選取它即可在該機器上啟動工作階段。Claude 會在遠端機器上執行,並可存取其檔案和工具。
848 848
849遠端機器可以執行 Linux、macOS 或 [Windows](#windows-remote-machines)。Desktop 會在您第一次連接時自動在遠端機器上安裝 Claude Code。連接後,SSH 工作階段支援權限模式、連接器、外掛和 MCP 伺服器。849遠端機器可以執行 Linux、macOS 或 [Windows](#windows-remote-machines)。Desktop 會在您第一次連線時自動在遠端機器上安裝 Claude Code。連線後,SSH 工作階段支援權限模式、連接器、外掛和 MCP 伺服器。
850 850
851<h4 id="remote-machine-requirements-for-ssh-sessions">851<h4 id="remote-machine-requirements-for-ssh-sessions">
852 SSH 工作階段的遠端機器需求852 SSH 工作階段的遠端機器需求
853</h4>853</h4>
854 854
855Linux 或 macOS 遠端機器需要受支援的處理器、具備 SFTP 的 SSH 伺服器、未以 `noexec` 掛載的安裝資料夾、可正常運作的 shell,以及網路存取。請在連接前,或在登入後連線失敗時,檢查每項需求:855Linux 或 macOS 遠端機器需要支援的處理器、具有 SFTP 的 SSH 伺服器、未以 `noexec` 掛載的安裝資料夾、可運作的 shell,以及網路存取。請在連線之前,或在登入後連線失敗時,檢查每一項需求:
856 856
857* **系統**:x86\_64 或 arm64 處理器。該機器也必須符合 Claude Code 的[系統需求](/docs/zh-TW/setup#system-requirements)。在 Linux 上,Claude Code 需要 glibc 2.17 或更新版本,或 musl。若要查看機器使用的是哪一種,請在該機器上執行 `ldd --version`。在以 musl 為基礎的發行版(例如 Alpine Linux)上,也請安裝 [Claude Code 所需的套件](/docs/zh-TW/setup#alpine-linux-and-musl-based-distributions)。857* **系統**:x86\_64 或 arm64 處理器。該機器也必須符合 Claude Code 的[系統需求](/docs/zh-TW/setup#system-requirements)。在 Linux 上,Claude Code 需要 glibc 2.17 或更新版本,或 musl。若要查看機器使用哪一種,請在該機器上執行 `ldd --version`。在 Alpine Linux 等以 musl 為基礎的發行版上,也請安裝 [Claude Code 所需的套件](/docs/zh-TW/setup#alpine-linux-and-musl-based-distributions)。
858* **SFTP**:SSH 伺服器必須提供 SFTP 子系統,可透過其 `sshd_config` 中的 `Subsystem sftp` 行開啟。若要檢查,請在您電腦上的終端機中使用 `sftp` 連接到相同的主機和連接埠。正常運作的伺服器會顯示 `sftp>` 提示字元。858* **SFTP**:SSH 伺服器必須提供 SFTP 子系統,其 `sshd_config` 中的 `Subsystem sftp` 行會開啟此子系統。若要檢查,請在您電腦上的終端機中以 `sftp` 連線到相同的主機和連接埠。可正常運作的伺服器會顯示 `sftp>` 提示字元。
859* **每個連線的工作階段數**:macOS 和 Linux 上的 Desktop 會在一個 SSH 連線上開啟多個工作階段。如果伺服器的 `sshd_config` 設定了 `MaxSessions 1`,請將其調高,例如調至 OpenSSH 的預設值 10。859* **每個連線的工作階段數**:macOS 和 Linux 上的 Desktop 會在一個 SSH 連線上開啟多個工作階段。如果伺服器的 `sshd_config` 設定了 `MaxSessions 1`,請將其調高,例如調到 OpenSSH 的預設值 10。
860* **安裝資料夾**:Desktop 會在您家目錄下的 `~/.claude/remote/` 安裝輔助程式和 Claude Code。它會從該處執行它們,因此該資料夾不能位於以 `noexec` 掛載的檔案系統上。請在每位連接使用者的家目錄中預留約 1 GB 的磁碟空間。關於該資料夾包含的內容,請參閱[遠端機器上的檔案和程序](#files-and-processes-on-the-remote-machine)。860* **安裝資料夾**:Desktop 會在您家目錄的 `~/.claude/remote/` 下安裝輔助程式和 Claude Code。它會從該處執行這些程式,因此該資料夾不能位於以 `noexec` 掛載的檔案系統上。請在每位連線使用者的家目錄中預留約 1 GB 的磁碟空間。如需該資料夾包含的內容,請參閱[遠端機器上的檔案和程序](#files-and-processes-on-the-remote-machine)。
861* **Shell**:遠端機器上為您帳戶設定的 shell 必須能執行透過 SSH 傳送的命令,就像 Bash、Zsh 和 `sh` 一樣861* **Shell**:遠端機器上為您帳戶設定的 shell 必須能執行透過 SSH 傳送的命令,如同 Bash、Zsh 和 `sh`
862* **網路**:Claude Code 在遠端機器上執行並從該處發出網路請求,因此該機器需要 [Claude Code 所需的網路存取](/docs/zh-TW/network-config#network-access-requirements)。如果該機器無法下載 Claude Code,Desktop 會在您的電腦上下載並上傳。Claude Code 的其他請求仍從遠端機器發出。862* **網路**:Claude Code 在遠端機器上執行,並從該處發出網路請求,因此該機器需要 [Claude Code 所需的網路存取](/docs/zh-TW/network-config#network-access-requirements)。如果該機器無法下載 Claude Code,Desktop 會在您的電腦上下載後再上傳。Claude Code 的其他請求仍會從遠端機器發出。在 Linux 遠端機器上,如果這些請求需要代理伺服器,請[為 SSH 工作階段設定它](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions)。
863
864<h4 id="set-a-proxy-or-a-ca-certificate-for-ssh-sessions">
865 為 SSH 工作階段設定代理伺服器或 CA 憑證
866</h4>
867
868如果 Linux 遠端機器透過代理伺服器連上網際網路或需要 CA 憑證,請在該機器的 `~/.claude/settings.json` 中的 `env` 下加入[代理伺服器和 CA 變數](/docs/zh-TW/network-config)。即使您已在該機器的 `~/.profile`、`~/.bash_profile`、`~/.zprofile` 或 `~/.zshrc` 中匯出這些變數,也請加入。
869
870SSH 工作階段不會從這些檔案取得這些變數,即使在該機器的終端機中執行的 `claude` 會取得。工作階段可能會因此停滯,或顯示 **The connection from … to the API failed** 或 **Authentication failed**,而重新登入也無濟於事。
871
872<Steps>
873 <Step title="加入變數">
874 對於 CA 檔案,請使用 [`NODE_EXTRA_CA_CERTS`](/docs/zh-TW/network-config#custom-ca-certificates),因為 Claude Code 不會信任 `~/.claude/settings.json` 中來自 `SSL_CERT_FILE` 的 CA。此範例設定了代理伺服器和 CA 檔案:
875
876 ```json ~/.claude/settings.json theme={null}
877 {
878 "env": {
879 "HTTPS_PROXY": "http://proxy.example.com:8080",
880 "NODE_EXTRA_CA_CERTS": "/etc/ssl/certs/example-ca.pem"
881 }
882 }
883 ```
884 </Step>
885
886 <Step title="再次傳送您的訊息">
887 請再次傳送您的訊息,因為您在該檔案中新增或變更的變數會在幾秒內生效。如果仍然失敗,請啟動新的工作階段。
888 </Step>
889</Steps>
890
891<h5 id="find-a-proxy-or-ca-variable-set-elsewhere-on-the-remote-machine">
892 找出在遠端機器其他位置設定的代理伺服器或 CA 變數
893</h5>
894
895請檢查 Linux 遠端機器是否在其他位置設定了代理伺服器或 CA 變數,因為工作階段會使用該值,並[忽略任何設定檔中的值](/docs/zh-TW/settings-reference#how-env-values-interact-with-your-shell):
896
897<Steps>
898 <Step title="列出遠端機器設定的變數">
899 在您電腦上的終端機中執行 `ssh devbox env`,並將主機換成您自己的。
900 </Step>
901
902 <Step title="在設定變數的位置變更該變數">
903 如果清單中有該變數,請在設定它的檔案中變更,例如遠端機器上的 `~/.zshenv`、`/etc/environment` 或 `~/.bashrc`。
904 </Step>
905
906 <Step title="讓工作階段取得新值">
907 重新啟動遠端機器,或結束 Desktop 並終止輔助程式的程序,如[移除輔助程式](#files-and-processes-on-the-remote-machine)的前兩個步驟所示。請在沒有任務執行時進行,因為任一種方式都會中斷 Claude 的工作。
908 </Step>
909</Steps>
863 910
864<h4 id="use-your-ssh-configuration-on-macos-and-linux">911<h4 id="use-your-ssh-configuration-on-macos-and-linux">
865 在 macOS 和 Linux 上使用您的 SSH 設定912 在 macOS 和 Linux 上使用您的 SSH 設定
866</h4>913</h4>
867 914
868在 macOS 和 Linux 上,Desktop 透過在您的電腦上執行 OpenSSH 用戶端來連接,因此會使用您的 `~/.ssh/config`。透過 OpenSSH 用戶端連接需要 Claude Desktop v1.37937.0 或更新版本。在 **SSH host** 欄位中輸入該檔案中的 `Host` 名稱,即可使用其項目中的設定,例如 `HostName`、`User`、`IdentityFile`、`CertificateFile`、`ProxyJump` 和 `ProxyCommand`。915在 macOS 和 Linux 上,Desktop 會執行您電腦上的 OpenSSH 用戶端來連線,因此會使用您的 `~/.ssh/config`。透過 OpenSSH 用戶端連線需要 Claude Desktop v1.37937.0 或更新版本。在 **SSH host** 欄位中輸入該檔案中的 `Host` 名稱,即可使用其項目中的設定,例如 `HostName`、`User`、`IdentityFile`、`CertificateFile`、`ProxyJump` 和 `ProxyCommand`。
869 916
870新增連線前,請在您電腦上的終端機中檢查用戶端和該項目:917新增連線之前,請在您電腦上的終端機中檢查用戶端和項目:
871 918
872* **用戶端版本**:執行 `ssh -V`。用戶端必須是 OpenSSH 7.6 或更新版本。919* **用戶端版本**:執行 `ssh -V`。用戶端必須是 OpenSSH 7.6 或更新版本。
873* **項目**:使用 `Host` 名稱執行 `ssh`,例如 `ssh devbox`。如果失敗,請先修正該項目。920* **項目**:以 `Host` 名稱執行 `ssh`,例如 `ssh devbox`。如果失敗,請先修正該項目。
874 921
875您可以將 **SSH port** 和 **SSH key (optional)** 欄位留空。如果您填寫其中之一,Desktop 會將其與該項目一起使用:922您可以將 **SSH port** 和 **SSH key (optional)** 欄位留空。如果您填寫其中之一,Desktop 會將其與項目一併使用:
876 923
877* **SSH port**:此處的值會覆寫該項目的 `Port`924* **SSH port**:此處的值會覆寫項目的 `Port`
878* **SSH key (optional)**:除了該項目的 `IdentityFile` 和您 SSH agent 中的金鑰外,Desktop 還會提供您選擇的金鑰檔案925* **SSH key (optional)**:除了項目的 `IdentityFile` 和您 SSH agent 中的金鑰之外,Desktop 也會提供您選取的金鑰檔案
879 926
880<h5 id="reach-a-machine-behind-a-jump-host">927<h5 id="reach-a-machine-behind-a-jump-host">
881 連接位於跳板主機後方的機器928 透過跳板主機連線到機器
882</h5>929</h5>
883 930
884若要連接位於跳板主機(也稱為堡壘主機)後方的機器,請在該項目中設定 `ProxyJump` 或 `ProxyCommand`。以下項目透過 `bastion.example.com` 連接 `devbox.internal.example.com`:931若要連線到位於跳板主機(也稱為 bastion)後方的機器,請在項目中設定 `ProxyJump` 或 `ProxyCommand`。下列項目會透過 `bastion.example.com` 連線到 `devbox.internal.example.com`:
885 932
886```text ~/.ssh/config theme={null}933```text ~/.ssh/config theme={null}
887Host devbox934Host devbox
892 939
893在 **SSH host** 欄位中輸入 `devbox`。940在 **SSH host** 欄位中輸入 `devbox`。
894 941
942<h5 id="reach-a-container-on-a-remote-machine">
943 連線到遠端機器上的容器
944</h5>
945
946若要在未公開 SSH 連接埠的容器內執行工作階段,請使用 `ProxyCommand` 連線到它,因為 Desktop 不會執行您所連線項目的 `RemoteCommand`。如果您的項目使用 `RemoteCommand` 進入容器,工作階段會在該項目所登入的機器上執行,而不是在容器中執行。
947
948<Steps>
949 <Step title="加入項目">
950 將下列項目新增至 `~/.ssh/config` 的結尾,若您有第一個 `Host *` 項目,則直接新增在其上方。請將 Docker 容器 `devbox`、其使用者 `dev` 與機器 `build.example.com` 替換為您自己的值。此項目的命令會為每個連線在容器內啟動一個 SSH 伺服器:
951
952 ```text ~/.ssh/config theme={null}
953 Host devbox-container
954 User dev
955 ProxyCommand ssh build.example.com docker exec -i devbox /usr/sbin/sshd -i
956 ```
957 </Step>
958
959 <Step title="準備容器">
960 * 安裝 OpenSSH 伺服器,並使用在您重新建置映像或重新建立容器時保持不變的主機金鑰
961 * 為 `User` 中指定的帳戶提供登入方式,例如 `authorized_keys` 檔案
962 * 確認容器符合[遠端機器需求](#remote-machine-requirements-for-ssh-sessions)
963 </Step>
964
965 <Step title="檢查允許清單">
966 如果您的管理員[限制 SSH 主機](#restrict-which-ssh-hosts-users-can-connect-to),請在您電腦上的終端機中執行 `ssh -G devbox-container`。請管理員在 `sshHostAllowlist` 中允許它輸出的 `hostname`,此處為 `devbox-container`。當管理員允許該名稱時,就等於允許您項目的 `ProxyCommand` 所連線的任何目標。
967 </Step>
968
969 <Step title="測試項目,然後連線">
970 在您電腦上的終端機中執行 `ssh devbox-container`。修正它回報的問題,並重複執行,直到它在不詢問您任何內容的情況下於容器中開啟 shell:
971
972 * **如果 `ssh` 要求輸入密碼、複雜密碼或驗證碼**:改用無需提示即可運作的登入方式,例如您 SSH agent 持有的金鑰
973 * **如果 `ssh` 回報 `Cannot execute command-line and remote command.` 或 `Bad packet length`**:從您 `build.example.com` 的項目中移除 `RemoteCommand` 和 `RequestTTY`。之後,在您電腦上的終端機中執行 `ssh build.example.com` 會在該機器上開啟 shell,而不是在容器中。
974 * **如果 `ssh` 回報 `Connection closed by UNKNOWN port 65535`**:在同一個終端機中執行 `ssh build.example.com docker exec devbox /usr/sbin/sshd -t`。
975 * 如果輸出 `Missing privilege separation directory: /run/sshd`,請在容器中建立該資料夾。
976 * 如果輸出 `no hostkeys available` 且容器有主機金鑰,請在此命令和項目中的 `exec` 之後加入 `-u root`。
977
978 然後在 **SSH host** 欄位中輸入 `devbox-container`。
979 </Step>
980</Steps>
981
895<h5 id="use-variables-from-your-shell-in-a-proxycommand">982<h5 id="use-variables-from-your-shell-in-a-proxycommand">
896 在 `ProxyCommand` 中使用 shell 的變數983 在 `ProxyCommand` 中使用來自您 shell 的變數
897</h5>984</h5>
898 985
899若要在 `ProxyCommand` 或 `Match exec` 命令中使用您自己的環境變數,請在 shell 啟動檔(例如 `~/.zshrc`)中匯出它,然後結束並重新開啟 Desktop。Desktop 啟動時會讀取您的登入 shell 所匯出的內容,並保留這些值直到您結束 Desktop 為止。986若要在 `ProxyCommand` 或 `Match exec` 命令中使用您自己的環境變數,請在 shell 啟動檔案(例如 `~/.zshrc`)中匯出它,然後結束並重新開啟 Desktop。Desktop 啟動時會讀取您登入 shell 匯出的內容,並保留這些值直到您結束它。
987
988這需要 Claude Desktop v2.37337.0 或更新版本,以及接受 `-0` 的 `env` 命令,您可以在電腦上的終端機中執行 `env -0` 來檢查。
989
990<Note>
991 如果您的 shell 設定了臨時 AWS 憑證,請[為 AWS CLI 提供設定檔](#use-aws-credentials-in-a-proxycommand),而不是匯出 `AWS_*` 變數。
992</Note>
993
994<a id="use-aws-credentials-in-a-proxycommand" />
900 995
901這需要 Claude Desktop v2.37337.0 或更新版本,以及接受 `-0` 的 `env` 命令;您可以在電腦上的終端機中執行 `env -0` 來檢查。996<h5 id="use-aws-credentials-in-a-proxycommand">
997 在 `ProxyCommand` 中使用 AWS 憑證
998</h5>
999
1000如果您在 shell 啟動檔案中設定了臨時 AWS 憑證,執行 AWS CLI 的 `ProxyCommand` 可能在終端機中能夠連線,但在 Desktop 中失敗。當您的 shell 匯出 `AWS_SESSION_TOKEN`、`AWS_SECURITY_TOKEN` 或 `AWS_CREDENTIAL_EXPIRATION` 時,Desktop 中的 `ssh` 和您的 `ProxyCommand` 不會取得 shell 的 AWS 憑證、`AWS_REGION` 或 `AWS_PROFILE`。
1001
1002如果 AWS CLI 沒有其他區域或憑證來源,它會失敗並顯示 `You must specify a region` 或 `Unable to locate credentials`。若要從 Desktop 連線,請為 AWS CLI 提供一個它從 `~/.aws/config` 讀取的設定檔:
1003
1004<Steps>
1005 <Step title="新增具有區域和憑證來源的設定檔">
1006 此範例新增名為 `corp` 的設定檔,該設定檔從輔助程式取得憑證:
1007
1008 ```ini ~/.aws/config theme={null}
1009 [profile corp]
1010 region = us-east-1
1011 credential_process = /full/path/to/your-credential-helper
1012 ```
1013
1014 * **`region`**:提供您所連線機器的 AWS 區域
1015 * **`credential_process`**:提供以 [AWS 文件所述的 JSON 格式](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html)輸出憑證之程式的完整路徑。請選擇不需要您輸入任何內容的程式,因為 AWS CLI 會在每次連線時執行它,包括您不在時的重新連線。
1016 * **IAM Identity Center**:加入設定檔的 [IAM Identity Center 設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)來取代 `credential_process`。請在連線之前於終端機中執行 `aws sso login --profile corp`,並在該登入失效時再次執行。
1017 </Step>
1018
1019 <Step title="在 ProxyCommand 中指定設定檔">
1020 此範例將 `--profile` 加入 [AWS 文件中針對 Session Manager 的命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html):
1021
1022 ```text ~/.ssh/config theme={null}
1023 Host i-*
1024 ProxyCommand sh -c "aws ssm start-session --profile corp --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
1025 ```
1026 </Step>
1027
1028 <Step title="再次連線">
1029 在終端機中以該主機執行 `ssh`,確認項目在該處仍可連線,然後從 Desktop 連線。
1030 </Step>
1031</Steps>
902 1032
903<h5 id="raise-the-ssh-connection-timeout">1033<h5 id="raise-the-ssh-connection-timeout">
904 提高 SSH 連線逾時1034 提高 SSH 連線逾時
905</h5>1035</h5>
906 1036
907如果您的 SSH 設定未為該主機設定 `ConnectTimeout`,Desktop 會給 `ssh` 30 秒來連接。透過跳板主機或 `ProxyCommand` 時,該時間包含路由連接所需的時間。如果您的路由需要更長時間,請在該項目中新增較高的值:1037如果您的 SSH 設定未針對主機設定 `ConnectTimeout`,Desktop 會給 `ssh` 30 秒的連線時間。透過跳板主機或 `ProxyCommand` 連線時,該時間包含路由連線所需的時間。如果您的路由需要更長時間,請在項目中加入更高的值:
908 1038
909```text ~/.ssh/config theme={null}1039```text ~/.ssh/config theme={null}
910Host devbox1040Host devbox
914 ConnectTimeout 1201044 ConnectTimeout 120
915```1045```
916 1046
917`ssh` 會使用它為主機找到的第一個值,因此請將該項目放在任何設定 `ConnectTimeout` 的 `Host *` 項目之上。若要確認,請在您電腦上的終端機中執行 `ssh -G devbox`。其輸出會包含 `connecttimeout 120`。變更值後,請結束並重新開啟 Desktop。1047`ssh` 會使用它為主機找到的第一個值,因此請將項目保持在任何設定 `ConnectTimeout` 的 `Host *` 項目之上。若要確認,請在您電腦上的終端機中執行 `ssh -G devbox`。其輸出會包含 `connecttimeout 120`。變更值之後,請結束並重新開啟 Desktop。
1048
1049如果遠端機器本身會等待您在手機上核准,無論您設定的 `ConnectTimeout` 為何,都請在 45 秒內核准。您無法提高此限制,因為 Desktop 會自行設定 `ServerAliveInterval` 和 `ServerAliveCountMax`,而 `ssh` 會關閉遠端機器在這段時間內未傳送任何內容的登入。如果改為由跳板主機或 `ProxyCommand` 等待您,請在遠端機器的項目中提高 `ConnectTimeout` 以涵蓋該時間。
1050
1051<h5 id="fix-a-match-host-block-that-only-desktop-applies">
1052 修正只有 Desktop 會套用的 `Match host` 區塊
1053</h5>
1054
1055如果 Desktop 使用了終端機中 `ssh devbox` 不會使用的設定,請在項目的 `HostName` 行上方尋找 `Match host` 區塊。在終端機中,`ssh` 會在 `HostName` 行之前讀取該處的區塊,因此它會將區塊與 `devbox` 比較。Desktop 會在命令列上將 `HostName` 值提供給 `ssh`,因此 `ssh` 會將區塊與該值比較。
1056
1057若要檢查,請在您電腦上的終端機中執行 `ssh -G`,並如同 Desktop 一樣在命令列上加入項目的 `HostName` 和 `User` 值:
1058
1059```bash theme={null}
1060ssh -G -o HostName=devbox.internal.example.com -l alice devbox
1061```
1062
1063將輸出與 `ssh -G devbox` 的輸出比較。如果區塊的設定(例如 `proxycommand`)只出現在第一個輸出中,該區塊就只會在 Desktop 中生效。若要讓 Desktop 也略過它,請在其 `Match` 行中加入 `!originalhost devbox`:
1064
1065```text ~/.ssh/config theme={null}
1066Match host *.internal.example.com !originalhost devbox
1067```
1068
1069若要確認,請再次執行第一個命令。區塊的設定不再出現在其輸出中。
918 1070
919<h5 id="forwarding-settings-that-desktop-leaves-off">1071<h5 id="forwarding-settings-that-desktop-leaves-off">
920 Desktop 保持關閉的轉送設定1072 Desktop 會關閉的轉送設定
921</h5>1073</h5>
922 1074
923在連往遠端機器的連線上,Desktop 會讓 `ForwardAgent`、`ForwardX11`、`LocalForward`、`RemoteForward`、`DynamicForward` 和 `Tunnel` 保持關閉,即使您的 SSH 設定開啟了它們。在[終端機](#run-commands-in-the-terminal)或 `!` 命令中,您的轉送設定預期[只會有時套用](#limits-while-desktop-is-disconnected),因為 Desktop 可能會在該處啟動一個遵循這些設定的獨立 `ssh`。1075在與遠端機器的連線上,Desktop 會關閉 `ForwardAgent`、`ForwardX11`、`LocalForward`、`RemoteForward`、`DynamicForward` 和 `Tunnel`,即使您的 SSH 設定開啟了它們。在[終端機](#run-commands-in-the-terminal)或 `!` 命令中,您的轉送設定可能[只有有時會套用](#limits-while-desktop-is-disconnected),因為 Desktop 可能會在該處啟動遵循這些設定的另一個 `ssh`。
924 1076
925* **若要連接遠端機器上的連接埠**:[自行轉送](#reach-a-port-on-the-remote-machine)1077* **若要連線到遠端機器上的連接埠**:[自行轉送](#reach-a-port-on-the-remote-machine)
926* **若要從遠端機器使用您自己的金鑰**:在遠端機器本身設定憑證,例如用於 `git push`1078* **若要從遠端機器使用您自己的金鑰**:在遠端機器本身設定憑證,例如用於 `git push`
927 1079
928若要避免 Desktop 轉送您的 SSH agent 或連接埠,請在您電腦上的終端機中執行 `ssh -G devbox`。接著以 Desktop 可能執行的方式再執行一次,帶入它印出的 `hostname` 和 `user` 值,例如 `ssh -G -o HostName=devbox.internal.example.com -l alice devbox`。第二次的輸出可能會顯示第一次略過的 `Match` 區塊中的設定。1080若要防止 Desktop 轉送您的 SSH agent 或連接埠,請在您電腦上的終端機中執行 `ssh -G devbox`。然後以 Desktop 可能的執行方式再執行一次,加上它輸出的 `hostname` 和 `user` 值,如 `ssh -G -o HostName=devbox.internal.example.com -l alice devbox`。第二個輸出可能會顯示第一個輸出略過的 `Match` 區塊中的設定。
929 1081
930在兩次輸出中尋找內容不是 `no` 的 `forwardagent` 行,以及以 `localforward`、`remoteforward` 或 `dynamicforward` 開頭的行。如果找到,請從您的 SSH 設定中移除該設定。對於您的 `ProxyCommand` 透過 `ssh` 連接的主機,也請比照辦理。1082在兩個輸出中尋找值不是 `no` 的 `forwardagent` 行,以及以 `localforward`、`remoteforward` 或 `dynamicforward` 開頭的行。如果找到,請從您的 SSH 設定中移除該設定。對您的 `ProxyCommand` 以 `ssh` 連線的主機也做同樣的處理。
931 1083
932<h4 id="reach-a-port-on-the-remote-machine">1084<h4 id="reach-a-port-on-the-remote-machine">
933 連接遠端機器上的連接埠1085 連線到遠端機器上的連接埠
934</h4>1086</h4>
935 1087
936若要開啟在遠端機器上執行的伺服器,例如連接埠 3000 上的開發伺服器,請自行轉送該連接埠。在您電腦上的終端機中,使用 `-L` 和您連接的主機(例如 `devbox`)執行 `ssh`:1088若要開啟在遠端機器上執行的伺服器(例如連接埠 3000 上的開發伺服器),請自行轉送該連接埠。在您電腦上的終端機中,以 `-L` 和您連線的主機(例如 `devbox`)執行 `ssh`:
937 1089
938```bash theme={null}1090```bash theme={null}
939ssh -N -L 3000:localhost:3000 devbox1091ssh -N -L 3000:localhost:3000 devbox
940```1092```
941 1093
942如果您在連線上填寫了 **SSH port** 或 **SSH key (optional)**,請加上帶有相同值的 `-p` 或 `-i`。讓該命令保持執行,並在您電腦上的瀏覽器中開啟 `http://localhost:3000`,即可連接遠端機器的連接埠 3000。如果 `ssh` 印出 `open failed: administratively prohibited`,請要求該機器的管理員允許 TCP 轉送,這由 SSH 伺服器 `sshd_config` 中的 `AllowTcpForwarding` 控制。1094如果您在連線上填寫了 **SSH port** 或 **SSH key (optional)**,請以相同的值加入 `-p` 或 `-i`。讓該命令保持執行,並在您電腦上的瀏覽器中開啟 `http://localhost:3000`,即可連線到遠端機器的連接埠 3000。如果 `ssh` 輸出 `open failed: administratively prohibited`,請要求該機器的管理員允許 TCP 轉送,這由 SSH 伺服器 `sshd_config` 中的 `AllowTcpForwarding` 控制。
943 1095
944<h4 id="windows-remote-machines">1096<h4 id="windows-remote-machines">
945 Windows 遠端機器1097 Windows 遠端機器
947 1099
948Windows 遠端機器需要 Claude Desktop v2.31226.0 或更新版本。1100Windows 遠端機器需要 Claude Desktop v2.31226.0 或更新版本。
949 1101
950請使用 Microsoft 的 OpenSSH Server。該機器可以是 x64 或 ARM64。SSH 伺服器啟動的 shell 可以是 `cmd.exe`、Windows PowerShell 5.1 或 Git Bash。1102請使用 Microsoft 的 OpenSSH Server。機器可以是 x64 或 ARM64。SSH 伺服器啟動的 shell 可以是 `cmd.exe`、Windows PowerShell 5.1 或 Git Bash。
951 1103
952Windows 遠端機器的測試比 Linux 遠端機器少。在依賴它之前,請先在該處嘗試您自己的工作。1104Windows 遠端機器的測試比 Linux 遠端機器少。在依賴它之前,請先在該處試用您自己的工作。
953 1105
954在 Windows 遠端機器上,預期會有以下限制(但不限於此):1106在 Windows 遠端機器上,預期會有下列限制(但不限於此):
955 1107
956* **終端機**:在資料夾為 Windows 路徑(例如 `C:/projects/app`)的工作階段中,[終端機](#run-commands-in-the-terminal)不會開啟1108* **終端機**:在資料夾為 Windows 路徑(例如 `C:/projects/app`)的工作階段中,[終端機](#run-commands-in-the-terminal)不會開啟
957* **沙箱**:Claude Code 在該處以原生 Windows 執行,會在沒有沙箱的情況下執行命令。請參閱[沙箱的執行位置](/docs/zh-TW/sandboxing)。1109* **沙箱**:Claude Code 在該處以原生 Windows 執行,並在沙箱外執行命令。請參閱[沙箱的執行位置](/docs/zh-TW/sandboxing)。
958* **外掛**:如果外掛包含 Windows 無法儲存的檔案或資料夾名稱(例如含有 `:` 的名稱),Desktop 不會複製該外掛。工作階段會列出 Desktop 略過的外掛。1110* **外掛**:Desktop 不會複製包含 Windows 無法儲存之檔案或資料夾名稱(例如含有 `:` 的名稱)的外掛。工作階段會列出 Desktop 略過的外掛。
959* **MCP 伺服器**:在某些 Windows 遠端機器上,Claude 對來自 `claude_desktop_config.json` 的 MCP 伺服器的呼叫會經過 Desktop,因此 Claude [在 Desktop 中斷連線時](#limits-while-desktop-is-disconnected)無法呼叫它們的工具。在 Claude Desktop v2.37337.0 之前,這適用於所有 Windows 遠端機器。1111* **MCP 伺服器**:在某些 Windows 遠端機器上,Claude 對 `claude_desktop_config.json` 中 MCP 伺服器的呼叫會經過 Desktop,因此 Claude [在 Desktop 中斷連線時](#limits-while-desktop-is-disconnected)無法呼叫它們的工具。在 Claude Desktop v2.37337.0 之前,這適用於所有 Windows 遠端機器。
960* **Worktree**:worktree 會放在 `<project-root>/.claude/worktrees/`。如果您[選擇其他資料夾](#choose-where-ssh-session-worktrees-go),Desktop 會忽略它。1112* **Worktree**:worktree 會放在 `<project-root>/.claude/worktrees/`。如果您[選擇其他資料夾](#choose-where-ssh-session-worktrees-go),Desktop 會忽略它。
961* **先前的訊息**:如果 SSH 伺服器的 shell 是 `cmd.exe` 或 Windows PowerShell,您可能必須先連接,才能看到工作階段先前的訊息1113* **先前的訊息**:如果 SSH 伺服器的 shell 是 `cmd.exe` 或 Windows PowerShell,您可能必須先連線才能看到工作階段先前的訊息
962* **分支**:如果 SSH 伺服器的 shell 是 `cmd.exe` 或 Windows PowerShell,您只能在工作階段的第一則訊息處分支1114* **分支**:如果 SSH 伺服器的 shell 是 `cmd.exe` 或 Windows PowerShell,您只能在工作階段的第一則訊息處分支該工作階段
963* **中斷連線時執行**:只有當 SSH 伺服器允許程式在啟動它的連線結束後繼續存在時,任務才會[在 Desktop 中斷連線時持續執行](#keep-a-task-running-while-desktop-is-disconnected)。若要確認,請[測試遠端機器](#prepare-a-long-task)。1115* **中斷連線時執行**:只有在 SSH 伺服器允許程式在啟動它的連線結束後繼續存在時,任務才會[在 Desktop 中斷連線時繼續執行](#keep-a-task-running-while-desktop-is-disconnected)。若要確認,請[測試遠端機器](#prepare-a-long-task)。
964* **殘留的程序**:工作階段結束後,請檢查機器上是否有 Claude Code 啟動的程式,因為它們可能會持續執行。Desktop 安裝的[背景輔助程式](#keep-a-task-running-while-desktop-is-disconnected)在該處不會自行停止。1116* **殘留的程序**:工作階段結束後,請檢查機器上是否有 Claude Code 啟動的程式,因為它們可能會繼續執行。Desktop 安裝的[背景輔助程式](#keep-a-task-running-while-desktop-is-disconnected)在該處不會自行停止。
965 1117
966<h4 id="keep-a-task-running-while-desktop-is-disconnected">1118<h4 id="keep-a-task-running-while-desktop-is-disconnected">
967 在 Desktop 中斷連線時讓任務持續執行1119 在 Desktop 中斷連線時讓任務繼續執行
968</h4>1120</h4>
969 1121
970如果您的電腦進入睡眠、您失去網路,或您結束 Desktop,任務會持續進行,直到完成、需要您處理,或達到其中一項[限制](#limits-while-desktop-is-disconnected)。闔上螢幕也算是睡眠。重新啟動 Desktop 或您的電腦(包括為了更新)都算是結束。1122如果您的電腦進入睡眠、失去網路或您結束 Desktop,任務會繼續進行,直到完成、需要您處理,或達到其中一項[限制](#limits-while-desktop-is-disconnected)。闔上筆電蓋子視為睡眠。Desktop 或電腦重新啟動(包括因更新而重新啟動)視為結束。
971 1123
972Claude Code 以程序形式在遠端機器上執行,由 Desktop 安裝在該處的背景輔助程式管理,因此它不需要您的 SSH 連線就能持續執行。本節所述的行為需要 Claude Desktop v2.31226.0 或更新版本。1124Claude Code 在遠端機器上以程序執行,並在 Desktop 安裝於該處的背景輔助程式之下運作,因此不需要您的 SSH 連線即可繼續執行。本節所述的行為需要 Claude Desktop v2.31226.0 或更新版本。
973 1125
974<Warning>1126<Warning>
975 如果您以 Claude 帳戶登入 Desktop,請勿指望任務能整夜執行。Desktop 只有在執行中且已連線時才會為任務更新該登入,因此在您中斷連線後,任務的登入可能會過期,任務隨之停止。您中斷連線時剩餘的時間各有不同,可能只有幾分鐘。1127 如果您使用 Claude 帳戶登入 Desktop,請勿指望任務能整夜執行。Desktop 只有在執行中且已連線時才會為任務更新該登入,因此在您中斷連線後,任務的登入可能會過期,任務隨之停止。您中斷連線時剩餘的時間不一,可能只有幾分鐘。
976 1128
977 目前已完成的工作會保留在遠端機器上,您回來時可以傳送訊息繼續。1129 目前完成的工作會保留在遠端機器上,您回來時可以傳送訊息繼續。
978 1130
979 如果任務必須整夜執行:1131 如果任務必須整夜執行:
980 1132
981 * [讓您的電腦保持喚醒](/docs/zh-TW/desktop-scheduled-tasks#how-scheduled-tasks-run)並連上網路,螢幕保持開啟且 Desktop 持續執行1133 * [讓您的電腦保持喚醒](/docs/zh-TW/desktop-scheduled-tasks#how-scheduled-tasks-run)並連上網路,筆電蓋子保持開啟且 Desktop 保持執行
982 * 對遠端機器以及途中的任何跳板主機,使用不需提示即可運作的登入方式,例如由您的 SSH agent 持有的金鑰。如此 Desktop 就能在斷線後自行重新連線。1134 * 對遠端機器及途中的任何跳板主機,使用無需提示即可運作的登入方式,例如您 SSH agent 持有的金鑰。這樣 Desktop 就能在連線中斷後自行重新連線。
983 1135
984 對於必須在您的電腦睡眠或關機時執行的任務,請改為啟動[雲端工作階段](#run-long-running-tasks-in-the-cloud)。1136 對於必須在電腦睡眠或關機時執行的任務,請改為啟動[雲端工作階段](#run-long-running-tasks-in-the-cloud)。
985</Warning>1137</Warning>
986 1138
987* **睡眠或網路中斷之後**:如果程序[仍在執行](#limits-while-desktop-is-disconnected),且 Desktop 可以在不需提示的情況下登入,您就能取回執行中的任務。如果無法,請[傳送訊息](#reconnect-after-sleep-or-a-network-loss)。1139* **睡眠或網路中斷之後**:如果程序[仍在執行](#limits-while-desktop-is-disconnected)且 Desktop 能在無提示的情況下登入,您就能取回執行中的任務。如果無法,請[傳送訊息](#reconnect-after-sleep-or-a-network-loss)。
988* **結束之後,Desktop 在 macOS 或 Linux 上且使用 Claude 帳戶**:如果 Desktop 能[重新加入該程序](#reopen-a-session-after-you-quit-desktop),您就能取回執行中的任務。如果無法,任務會停止。如果任務持續停止,請傳送訊息。1140* **結束之後,Desktop 在 macOS 或 Linux 上且使用 Claude 帳戶**:如果 Desktop 能[重新加入該程序](#reopen-a-session-after-you-quit-desktop),您就能取回執行中的任務。如果無法,任務會停止。如果任務持續停止,請傳送訊息。
989* **結束之後,Desktop 在 Windows 上或使用[第三方供應商](/docs/zh-TW/third-party-integrations)**:您會失去執行中的任務,因為 Desktop 會在工作階段開啟時結束該程序。請傳送訊息以繼續。1141* **結束之後,Desktop 在 Windows 上或使用[第三方供應商](/docs/zh-TW/third-party-integrations)**:您會失去執行中的任務,因為 Desktop 會在工作階段開啟時終止該程序。請傳送訊息以繼續。
990 1142
991當您回來而任務尚未完成時,請查看是否有 Desktop 無法重新連線的訊息、身分驗證錯誤或等待中的請求:1143當您回來且任務尚未完成時,請檢查是否有 Desktop 無法重新連線的訊息、身分驗證錯誤或等待中的請求:
992 1144
993* **Desktop 無法重新連線**:工作階段會說明原因,通知也可能會說明。Desktop 可能[需要您登入](#reconnect-after-sleep-or-a-network-loss)。1145* **Desktop 無法重新連線**:工作階段會說明原因,通知也可能會說明。Desktop 可能[需要您登入](#reconnect-after-sleep-or-a-network-loss)。
994* **身分驗證錯誤**:[登入 token 或憑證](#limits-while-desktop-is-disconnected)可能已過期。使用 Claude 帳戶時,請傳送訊息以繼續。使用第三方供應商時,請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。1146* **身分驗證錯誤**:[登入 token 或憑證](#limits-while-desktop-is-disconnected)可能已過期。使用 Claude 帳戶時,請傳送訊息以繼續。使用第三方供應商時,請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。
1001 準備長時間任務1153 準備長時間任務
1002</h5>1154</h5>
1003 1155
1004* **先更新**:在開始長時間任務之前更新 Desktop。在 macOS 和 Windows 上,Desktop 可能會自行重新啟動以安裝已下載的更新。當 Claude 正在處理 SSH 任務時,該重新啟動會等待。在 macOS 上使用 Claude 帳戶時,預設情況下,一旦更新已等待 72 小時,重新啟動仍可能照常進行。1156* **先更新**:在開始長時間任務之前更新 Desktop。在 macOS 和 Windows 上,Desktop 可能會自行重新啟動以安裝已下載的更新。當 Claude 正在處理 SSH 任務時,該重新啟動會等待。在 macOS 上使用 Claude 帳戶時,預設情況下,一旦更新已等待 72 小時,重新啟動仍可能會進行。
1005* **不要結束 Desktop**:如果 Desktop 在 Windows 上執行或使用第三方供應商,請在長時間任務執行期間保持開啟。結束之後,它會在工作階段開啟時[結束執行中的任務](#reopen-a-session-after-you-quit-desktop)。保持開啟並不能保護[等待您處理](#handle-requests-that-arrive-while-you-are-away)的請求。1157* **不要結束 Desktop**:如果 Desktop 在 Windows 上執行或使用第三方供應商,請在長時間任務執行期間讓它保持開啟。結束之後,它會在工作階段開啟時[終止執行中的任務](#reopen-a-session-after-you-quit-desktop)。讓它保持開啟並不能保護[等待您處理](#handle-requests-that-arrive-while-you-are-away)的請求。
1006* **減少請求**:選擇能[讓任務較少等待您](#handle-requests-that-arrive-while-you-are-away)的權限模式、規則或 hook1158* **減少請求**:選擇能[讓任務較少等待您](#handle-requests-that-arrive-while-you-are-away)的權限模式、規則或 hook
1007* **檢查跳板主機**:如果您的跳板主機要求登入,例如推播到手機,請改用不需提示即可運作的登入方式。否則 Desktop 每次嘗試重新連線時都可能再傳送一次推播。1159* **檢查跳板主機**:如果您的跳板主機要求登入(例如推送到手機),請改用無需提示即可運作的登入方式。否則 Desktop 每次嘗試重新連線時都可能再傳送一次推送。
1008* **測試遠端機器**:啟動一個簡短的任務,在任務仍在執行時結束 Desktop,並在任務理應完成很久之後再次開啟工作階段。如果任務尚未完成且工作階段未顯示身分驗證錯誤,請檢查遠端機器上[可能結束任務的因素](#limits-while-desktop-is-disconnected)。1160* **測試遠端機器**:啟動一個短任務,在任務仍在執行時結束 Desktop,並在任務應已完成很久之後再次開啟工作階段。如果任務尚未完成且工作階段未顯示身分驗證錯誤,請檢查遠端機器上[可能終止任務的因素](#limits-while-desktop-is-disconnected)。
1009* **不要在 Desktop 的終端機中執行命令**:如果遠端機器會[登出閒置的終端機](#limits-while-desktop-is-disconnected),請從 Desktop 以外的 SSH 登入執行您自己的命令1161* **不要在 Desktop 的終端機中執行命令**:如果遠端機器會[登出閒置的終端機](#limits-while-desktop-is-disconnected),請從 Desktop 以外的 SSH 登入執行您自己的命令
1010 1162
1011<a id="limits-while-desktop-is-disconnected" />1163<a id="limits-while-desktop-is-disconnected" />
1014 Desktop 中斷連線時的限制1166 Desktop 中斷連線時的限制
1015</h5>1167</h5>
1016 1168
1017您讓其持續執行的任務可能會在其登入過期時、在遠端機器將其結束時,或在輔助程式停止或被取代時結束:1169您讓其保持執行的任務,可能會在其登入過期時、遠端機器終止它時,或輔助程式停止或被取代時結束:
1018 1170
1019* **登入 token 或憑證**:使用 Claude 帳戶時,token 過期時任務會因身分驗證錯誤而停止。使用第三方供應商時,會過期的憑證(例如來自單一登入或憑證輔助程式的憑證)也是如此。請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。使用 Claude 帳戶時,請[讓 Desktop 保持執行並連線](#keep-a-task-running-while-desktop-is-disconnected),以便它能更新登入。1171* **登入 token 或憑證**:使用 Claude 帳戶時,token 過期後任務會因身分驗證錯誤而停止。使用第三方供應商時,會過期的憑證(例如來自單一登入或憑證輔助程式的憑證)也是如此。請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。使用 Claude 帳戶時,請[讓 Desktop 保持執行且已連線](#keep-a-task-running-while-desktop-is-disconnected),以便它更新登入。
1020* **遠端機器**:如果遠端機器重新啟動,或在您的 SSH 連線關閉時結束您的程序,執行中的任務就會結束。在 Desktop 中斷連線期間,沒有任何東西會再次啟動它。systemd-logind 的 `KillUserProcesses` 為 `yes` 且適用於您使用者的 Linux 機器,就會以此方式結束您的程序。若要讓任務在該處持續執行,請要求管理員將您的使用者排除,例如使用 `KillExcludeUsers`。1172* **遠端機器**:如果遠端機器重新啟動,或在您的 SSH 連線關閉時終止您的程序,執行中的任務就會結束。Desktop 中斷連線期間,沒有任何機制會重新啟動它。systemd-logind 的 `KillUserProcesses` 為 `yes` 且適用於您使用者的 Linux 機器,會以這種方式終止您的程序。若要讓任務在該處持續執行,請要求管理員將您的使用者排除,例如使用 `KillExcludeUsers`。
1021* **閒置的終端機**:某些 Linux 遠端機器會在一段設定時間內無人輸入時登出終端機(systemd-logind 的 `StopIdleSessionSec`)。Desktop 在 macOS 或 Linux 上時,工作階段的[終端機](#run-commands-in-the-terminal)和 `!` 命令預設會共用 Desktop 的 SSH 連線。該登出會在 Desktop 連線期間結束該連線,執行中的任務可能隨之結束。關閉終端機窗格並不能防止這種情況,因此請[不要在該終端機中執行命令](#prepare-a-long-task)。1173* **閒置的終端機**:某些 Linux 遠端機器會登出在設定時間內無人輸入的終端機(systemd-logind 的 `StopIdleSessionSec`)。Desktop 在 macOS 或 Linux 上時,工作階段的[終端機](#run-commands-in-the-terminal)和 `!` 命令預設會共用 Desktop 的 SSH 連線。該登出會在 Desktop 連線時結束連線,執行中的任務也可能隨之結束。關閉終端機窗格無法避免此情況,因此請[不要在該終端機中執行命令](#prepare-a-long-task)。
1022* **Desktop 更新**:如果更新帶來新的輔助程式,Desktop 會在之後的連線中取代遠端機器上的輔助程式,這可能會結束仍在執行的任務1174* **Desktop 更新**:如果更新帶來新的輔助程式,Desktop 會在之後的連線中取代遠端機器上的輔助程式,這可能會終止仍在執行的任務
1023* **長時間離開**:在 Linux 或 macOS 遠端機器上,如果 Desktop 30 天未連接,輔助程式會停止,並結束在其下執行的每個 Claude Code 程序。請在此之前連接。1175* **長時間未連線**:在 Linux 或 macOS 遠端機器上,如果 Desktop 30 天內未連線,輔助程式會停止,並終止在其下執行的每個 Claude Code 程序。請在此之前連線。
1024 1176
1025Desktop 中斷連線時,檔案編輯和某些工具可能會失敗。如果任務需要它們,請讓 Desktop 保持連線:1177Desktop 中斷連線時,檔案編輯和某些工具可能會失敗。如果任務需要它們,請讓 Desktop 保持連線:
1026 1178
1027* **Worktree**:在使用 [worktree](#work-in-parallel-with-sessions) 的工作階段中,Desktop 會在 Claude 進行每次檔案編輯之前檢查它。Desktop 中斷連線時,每次編輯會等待約 30 秒,然後失敗。Shell 命令仍會執行。在 Linux 或 macOS 遠端機器上,[編輯可以持續運作](#worktree-edits-while-disconnected)。如果您不確定,請在不使用 worktree 的情況下啟動工作階段。1179* **Worktree**:在使用 [worktree](#work-in-parallel-with-sessions) 的工作階段中,Desktop 會在 Claude 進行每次檔案編輯之前先檢查。Desktop 中斷連線時,每次編輯會等待約 30 秒後失敗。Shell 命令仍會執行。在 Linux 或 macOS 遠端機器上,[編輯可能會繼續運作](#worktree-edits-while-disconnected)。如果您不確定,請不使用 worktree 啟動工作階段。
1028* **資料夾限制**:如果您的組織限制工作階段可使用的資料夾,Desktop 會檢查每次檔案讀取、搜尋和編輯,無論是否使用 worktree。Desktop 中斷連線時,每一項會等待最多 10 分鐘,然後失敗。1180* **資料夾限制**:如果您的組織限制工作階段可使用的資料夾,無論是否使用 worktree,Desktop 都會檢查每次檔案讀取、搜尋和編輯。Desktop 中斷連線時,每項操作會等待最多 10 分鐘後失敗。
1029* **連接器**:[連接器](#connect-external-tools)和 Desktop 提供的其他工具會透過 Desktop 執行,因此在它中斷連線時,每次呼叫會在約 30 秒後失敗1181* **連接器**:[連接器](#connect-external-tools)和 Desktop 提供的其他工具會透過 Desktop 執行,因此在 Desktop 中斷連線時,每次呼叫會在約 30 秒後失敗
1030* **工作流程**:Desktop 會在每個新的[工作流程](/docs/zh-TW/workflows)啟動前檢查它,因此在 Desktop 中斷連線時,新的工作流程會等待最多 10 分鐘,然後失敗1182* **工作流程**:Desktop 會在每個新的[工作流程](/docs/zh-TW/workflows)啟動前進行檢查,因此在 Desktop 中斷連線時,新的工作流程會等待最多 10 分鐘後失敗
1031* **MCP 伺服器**:Claude Code 在遠端機器上啟動的 MCP 伺服器不會透過 Desktop 執行,因此 Claude 仍可呼叫它們的工具。來自 `claude_desktop_config.json` 的伺服器只有在 Desktop 未使用其[內建 SSH 用戶端](#worktree-edits-while-disconnected)時才屬於此類。否則,以及在[某些 Windows 遠端機器](#windows-remote-machines)上,Claude 在 Desktop 中斷連線時無法呼叫它們的工具。1183* **MCP 伺服器**:Claude Code 在遠端機器上啟動的 MCP 伺服器不會透過 Desktop 執行,因此 Claude 仍可呼叫它們的工具。只有在 Desktop 未使用其[內建 SSH 用戶端](#worktree-edits-while-disconnected)時,來自 `claude_desktop_config.json` 的伺服器才屬於此類。否則,以及在[某些 Windows 遠端機器](#windows-remote-machines)上,Claude 在 Desktop 中斷連線時無法呼叫它們的工具。
1032 1184
1033<span id="worktree-edits-while-disconnected" />1185<span id="worktree-edits-while-disconnected" />
1034 1186
1035<Accordion title="worktree 中的編輯何時可持續運作">1187<Accordion title="worktree 中的編輯何時會繼續運作">
1036 在 Linux 或 macOS 遠端機器上,該檢查不會經過 Desktop,因此在 Desktop 中斷連線時,worktree 內的編輯會持續運作。在 Claude Desktop v2.37337.0 之前,這僅適用於 Linux 遠端機器。1188 在 Linux 或 macOS 遠端機器上,該檢查不會經過 Desktop,因此在 Desktop 中斷連線時,worktree 內的編輯會繼續運作。在 Claude Desktop v2.37337.0 之前,這僅適用於 Linux 遠端機器。
1037 1189
1038 在某些情況下編輯仍會失敗,包括以下情況:1190 在某些情況下編輯仍會失敗,包括下列情況:
1039 1191
1040 * **內建 SSH 用戶端**:Desktop 使用它,例如在 Microsoft Store 安裝中、在沒有 Microsoft OpenSSH 9.4 或更新版本的 Windows 電腦上,或在 Windows 上使用第三方供應商時的預設情況1192 * **內建 SSH 用戶端**:Desktop 使用它,例如在 Microsoft Store 安裝版中、在沒有 Microsoft OpenSSH 9.4 或更新版本的 Windows 電腦上,或在 Windows 上使用第三方供應商時預設如此
1041 * **儲存庫位置**:儲存庫是您的家目錄、其上層的資料夾,或 `~/.claude`1193 * **儲存庫位置**:儲存庫是您的家目錄、家目錄上層的資料夾,或 `~/.claude`
1042 * **macOS 路徑**:在 macOS 遠端機器上,儲存庫位於 `/Volumes` 之下,或儲存庫或 worktree 路徑中的資料夾名稱含有 `~` 或非 ASCII 字元1194 * **macOS 路徑**:在 macOS 遠端機器上,儲存庫位於 `/Volumes` 之下,或儲存庫或 worktree 路徑中的資料夾名稱含有 `~` 或非 ASCII 字元
1043 * **資料夾限制**:您的組織限制工作階段可使用的資料夾1195 * **資料夾限制**:您的組織限制工作階段可使用的資料夾
1044 * **企業啟動器**:在 Claude Desktop v2.37337.0 之前,您以 Claude 帳戶登入,且您的組織透過[企業啟動器](/docs/zh-TW/corporate-launcher)在遠端機器上啟動 Claude Code1196 * **企業啟動器**:在 Claude Desktop v2.37337.0 之前,您使用 Claude 帳戶登入,且您的組織透過[企業啟動器](/docs/zh-TW/corporate-launcher)在遠端機器上啟動 Claude Code
1045 1197
1046 沒有 worktree 的工作階段沒有這類檢查,除非您的組織限制工作階段可使用的資料夾。1198 沒有 worktree 的工作階段不會有此類檢查,除非您的組織限制工作階段可使用的資料夾。
1047</Accordion>1199</Accordion>
1048 1200
1049<a id="handle-requests-that-arrive-while-you-are-away" />1201<a id="handle-requests-that-arrive-while-you-are-away" />
1050 1202
1051<h5 id="handle-requests-that-arrive-while-you-are-away">1203<h5 id="handle-requests-that-arrive-while-you-are-away">
1052 處理您離開期間到達的請求1204 處理您不在時收到的請求
1053</h5>1205</h5>
1054 1206
1055如果 Claude 在 Desktop 中斷連線時需要您的核准或向您提問,Claude 會在遠端機器上等待。該等待本身沒有時間限制。當 Desktop 重新加入該程序時,會向您顯示該請求。如果 Desktop 改為啟動新的程序,您就會失去該請求。1207如果 Claude 在 Desktop 中斷連線時需要您的核准或向您提問,Claude 會在遠端機器上等待。此等待本身沒有時間限制。當 Desktop 重新加入該程序時,會向您顯示該請求。如果 Desktop 改為啟動新的程序,您就會失去該請求。
1056 1208
1057在任務等待您時,Desktop 可能會自行重新啟動,例如為了安裝更新。如果 Desktop 在 Windows 上執行或使用第三方供應商,您會在該次重新啟動後失去該請求。1209在任務等待您期間,Desktop 可能會自行重新啟動,例如為了安裝更新。如果 Desktop 在 Windows 上執行或使用第三方供應商,該次重新啟動後您就會失去該請求。
1058 1210
1059如果您失去了請求,請傳送訊息以繼續。1211如果您失去請求,請傳送訊息以繼續。
1060 1212
1061若要減少任務停下來等待您的頻率,並在您離開時收到它的消息,請在離開前設定以下任一項:1213若要減少任務停下來等待您的頻率,並在您不在時收到任務的消息,請在離開前設定下列任一項:
1062 1214
1063* **自動模式**:如果[您可使用自動模式](#auto-mode-availability),請選擇[自動模式](#choose-a-permission-mode)。在多次遭到阻擋後,系統會[再次詢問您](/docs/zh-TW/permission-modes#when-auto-mode-falls-back)。1215* **自動模式**:如果[您可使用自動模式](#auto-mode-availability),請選擇[自動模式](#choose-a-permission-mode)。在多次遭到封鎖後,系統會[再次詢問您](/docs/zh-TW/permission-modes#when-auto-mode-falls-back)。
1064* **允許規則**:在遠端機器上的使用者設定檔 `~/.claude/settings.json` 中,為任務所需的命令新增[允許規則](/docs/zh-TW/permissions#manage-permissions)。如果您的組織[僅接受來自受管設定的權限規則](/docs/zh-TW/settings-reference#allowmanagedpermissionrulesonly),請要求您的管理員將它們新增到會到達遠端機器的[受管設定](#managed-settings)中。關於專案 `.claude/settings.json` 中的允許規則,請參閱[專案允許規則與工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)。1216* **允許規則**:在遠端機器上的使用者設定檔 `~/.claude/settings.json` 中,為任務所需的命令加入[允許規則](/docs/zh-TW/permissions#manage-permissions)。如果您的組織[只接受來自受管設定的權限規則](/docs/zh-TW/settings-reference#allowmanagedpermissionrulesonly),請要求管理員將規則加入會傳送到遠端機器的[受管設定](#managed-settings)。如需專案 `.claude/settings.json` 中的允許規則,請參閱[專案允許規則與工作區信任](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)。
1065* **代為回應的 hook**:在遠端機器上的 `~/.claude/settings.json` 中設定 [`PermissionRequest` hook](/docs/zh-TW/hooks#permissionrequest),以代替您允許或拒絕請求1217* **會代為回應的 hook**:在遠端機器上的 `~/.claude/settings.json` 中設定 [`PermissionRequest` hook](/docs/zh-TW/hooks#permissionrequest),代替您允許或拒絕請求
1066* **提醒您的 hook**:在同一個檔案中設定帶有 `permission_prompt` matcher 的 [`Notification` hook](/docs/zh-TW/hooks#notification),以在有請求等待時傳送訊息給自己1218* **會提醒您的 hook**:在同一個檔案中設定帶有 `permission_prompt` matcher 的 [`Notification` hook](/docs/zh-TW/hooks#notification),在有請求等待時傳送訊息給自己
1067* **在 Claude 完成時通知您的 hook**:在同一個檔案中設定 [`Stop` hook](/docs/zh-TW/hooks#stop),以在 Claude 完成回應時傳送訊息給自己。當 API 錯誤結束回合時它不會執行。針對該情況,請設定 [`StopFailure` hook](/docs/zh-TW/hooks#stopfailure)。1219* **在 Claude 完成時通知您的 hook**:在同一個檔案中設定 [`Stop` hook](/docs/zh-TW/hooks#stop),在 Claude 完成回應時傳送訊息給自己。當 API 錯誤結束該回合時,它不會執行。對於該情況,請設定 [`StopFailure` hook](/docs/zh-TW/hooks#stopfailure)。
1068 1220
1069如果您的組織[僅執行受管 hook](/docs/zh-TW/settings-reference#allowmanagedhooksonly),請要求您的管理員將該 hook 新增到會到達遠端機器的[受管設定](#managed-settings)中。1221如果您的組織[只執行受管 hook](/docs/zh-TW/settings-reference#allowmanagedhooksonly),請要求管理員將 hook 加入會傳送到遠端機器的[受管設定](#managed-settings)。
1070 1222
1071Claude Code 在任何權限模式下(包括 Bypass permissions)都不會自動核准[少數幾項動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)。依權限模式而定,Claude Code 會拒絕此類動作或詢問您,任務隨後會等待您的回應。1223Claude Code 在任何權限模式下(包括 Bypass permissions)都不會自動核准[少數動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)。視權限模式而定,Claude Code 會拒絕此類動作或詢問您,任務接著會等待您的回答。
1072 1224
1073<a id="reconnect-after-sleep-or-a-network-loss" />1225<a id="reconnect-after-sleep-or-a-network-loss" />
1074 1226
1076 睡眠或網路中斷後重新連線1228 睡眠或網路中斷後重新連線
1077</h5>1229</h5>
1078 1230
1079如果您回來時 Desktop 尚未重新連線,請在工作階段中傳送訊息。Desktop 只有在可以不需提示即可登入的情況下才會自行重新連線,例如使用由您的 SSH agent 持有的金鑰。1231如果您回來時 Desktop 尚未重新連線,請在工作階段中傳送訊息。只有在能夠無提示登入的情況下(例如使用您 SSH agent 持有的金鑰),Desktop 才會自行重新連線。
1080 1232
1081* **記住的密碼**:您讓 Desktop 記住的密碼也可以不需提示即可運作,但若要長時間離開,建議使用由您的 SSH agent 持有的金鑰。如果使用該密碼的登入中斷或停滯,Desktop 可能會停止重新連線並等待您。1233* **記住的密碼**:您讓 Desktop 記住的密碼同樣能在無提示的情況下運作,但若長時間離開,建議使用您 SSH agent 持有的金鑰。如果使用該密碼的登入中斷或停滯,Desktop 可能會停止重新連線並等待您。
1082* **其他任何提示**:如果遠端機器提示輸入其他內容,例如一次性驗證碼,您的電腦上可能會收到通知。點擊該通知,或在工作階段中傳送訊息,Desktop 就會顯示該提示。1234* **其他任何提示**:如果遠端機器提示輸入其他內容(例如一次性驗證碼),您可能會在電腦上收到通知。按一下通知,或在工作階段中傳送訊息,Desktop 就會顯示該提示。
1083 1235
1084<Accordion title="如果跳板主機要求登入、中斷時間很長、輸出遺失或程序已消失">1236<Accordion title="如果跳板主機要求登入、中斷時間很長、輸出遺失或程序已消失">
1085 - **跳板主機,您離開期間推播停止**:當無人回應跳板主機的登入(例如推播到手機)時,Desktop 在 macOS 或 Linux 上可能會發生這種情況。Desktop 接著會在無人使用您的電腦時停止重新連線。當您解鎖或使用電腦時,可能會再收到一次推播,因為 Desktop 可能會再次嘗試。在三次未回應的嘗試後,它會等待您重試或傳送訊息。1237 - **跳板主機,您不在時推送停止**:當沒有人回應跳板主機的登入(例如推送到手機)時,macOS 或 Linux 上的 Desktop 可能會發生此情況。Desktop 接著會在沒有人使用您電腦時停止重新連線。當您解鎖或使用電腦時,您可能會再收到一次推送,因為 Desktop 可能會再試一次。在三次嘗試未獲回應後,它會等待直到您重試或傳送訊息。
1086 - **跳板主機,推播持續出現**:在 Desktop 無法判斷無人回應的情況下(例如 Desktop 在 Windows 上),只要它有可重新加入的程序,無論該程序是否仍在執行,它都會持續嘗試。每次嘗試您都可能收到另一次推播。若要停止嘗試,請結束 Desktop,但這[可能讓您失去執行中的任務](#reopen-a-session-after-you-quit-desktop)。1238 - **跳板主機,推送持續傳來**:在 Desktop 無法判斷沒有人回應的情況下(例如 Windows 上的 Desktop),只要有可重新加入的程序,無論該程序是否仍在執行,它都會持續嘗試。您每次嘗試都可能再收到一次推送。若要結束嘗試,請結束 Desktop,這[可能會讓您失去執行中的任務](#reopen-a-session-after-you-quit-desktop)。
1087 - **長時間中斷**:Desktop 會放慢到大約每五分鐘嘗試一次。若要更快重新連線,請在工作階段中重試或傳送訊息,Desktop 會在連線後傳送該訊息。1239 - **長時間中斷**:Desktop 會放慢到大約每五分鐘嘗試一次。若要更快重新連線,請在工作階段中重試或傳送訊息,Desktop 會在連線後傳遞該訊息。
1088 - **遺失的輸出**:在 Desktop 中斷連線期間,輔助程式會將每個工作階段最近的 Claude Code 輸出保存在 16 MiB 的緩衝區中,並捨棄較舊的輸出。Desktop 重新連線後,工作階段可能會顯示 `Loading recent output from <host>…`。如果 Desktop 無法載入所有輸出,您會看到 `Some output produced while you were disconnected may be missing here.` 這一列。該列並不表示任務已停止。1240 - **輸出遺失**:Desktop 中斷連線時,輔助程式會將每個工作階段最近的 Claude Code 輸出保留在 16 MiB 的緩衝區中,並捨棄較舊的輸出。Desktop 重新連線後,工作階段可能會顯示 `Loading recent output from <host>…`。如果 Desktop 無法載入所有輸出,您會看到 `Some output produced while you were disconnected may be missing here.` 這一列。此列並不代表任務已停止。
1089 - **程序已消失**:如果 Desktop 重新連線時程序已消失,Desktop 可以從對話的已儲存歷史記錄啟動新的程序,並告訴 Claude 繼續該任務。如果程序持續結束,或 Desktop 使用第三方供應商,Desktop 不會自行繼續該任務。請傳送訊息以繼續。1241 - **程序已消失**:如果 Desktop 重新連線時程序已消失,Desktop 可能會根據對話的已儲存歷程記錄啟動新的程序,並告訴 Claude 繼續任務。如果程序持續結束,或 Desktop 使用第三方供應商,Desktop 不會自行繼續任務。請傳送訊息以繼續。
1090</Accordion>1242</Accordion>
1091 1243
1092<a id="reopen-a-session-after-you-quit-desktop" />1244<a id="reopen-a-session-after-you-quit-desktop" />
1095 結束 Desktop 後重新開啟工作階段1247 結束 Desktop 後重新開啟工作階段
1096</h5>1248</h5>
1097 1249
1098結束 Desktop 後,任務會在遠端機器上持續執行,直到完成、需要您處理,或達到其中一項[限制](#limits-while-desktop-is-disconnected)。1250結束 Desktop 後,任務會在遠端機器上繼續執行,直到完成、需要您處理,或達到其中一項[限制](#limits-while-desktop-is-disconnected)。
1099 1251
1100* **Desktop 在 macOS 或 Linux 上,使用 Claude 帳戶**:啟動 Desktop 並開啟工作階段。當 Desktop 能重新加入該程序時,您就能取回執行中的任務。它並非總是能重新加入,例如在某些 Desktop 更新之後,或在您的組織變更其受管設定之後。1252* **macOS 或 Linux 上的 Desktop,使用 Claude 帳戶**:啟動 Desktop 並開啟工作階段。當 Desktop 能重新加入程序時,您就能取回執行中的任務。它不一定都能重新加入,例如在某些 Desktop 更新之後,或在您的組織變更其受管設定之後。
1101* **在 macOS 或 Linux 上,當 Desktop 無法重新加入時**:Desktop 會結束該程序,並從對話的已儲存歷史記錄啟動新的程序。您執行中的任務會停止,且您會失去任何正在等待您的核准或問題。更新之後,Desktop 接著可能會告訴 Claude 繼續。如果任務持續停止,請傳送訊息。1253* **在 macOS 或 Linux 上,當 Desktop 無法重新加入時**:Desktop 會終止該程序,並根據對話的已儲存歷程記錄啟動新的程序。您執行中的任務會停止,且您會失去任何等待您處理的核准或問題。更新之後,Desktop 接著可能會告訴 Claude 繼續。如果任務持續停止,請傳送訊息。
1102* **Desktop 在 Windows 上,或在任何平台上使用第三方供應商**:只有在您預期任務已完成時才再次啟動 Desktop。您無法取回執行中的任務,因為 Desktop 在結束後絕不會重新加入。它會在工作階段開啟時結束該程序,而這可能在 Desktop 啟動時就發生。請傳送訊息以繼續。1254* **Windows 上的 Desktop,或在任何平台上使用第三方供應商**:只有在您預期任務已完成時才再次啟動 Desktop。您無法取回執行中的任務,因為 Desktop 在結束後永遠不會重新加入。它會在工作階段開啟時終止該程序,而這可能在 Desktop 啟動時就發生。請傳送訊息以繼續。
1103 1255
1104關於第三方部署,請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。1256如需第三方部署的相關資訊,請參閱 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。
1105 1257
1106<Warning>1258<Warning>
1107 當對話的 Claude Code 程序仍在執行時,請勿在遠端機器上為其執行 [`claude --resume`](/docs/zh-TW/cli-reference#cli-flags)。Claude Code 不會阻止您,而兩個程序接著會寫入同一個對話。如果您不確定,請加上 `--fork-session`,它會在對話的副本中繼續,但兩個程序仍會處理相同的檔案。1259 當對話的 Claude Code 程序仍在執行時,請勿在遠端機器上為該對話執行 [`claude --resume`](/docs/zh-TW/cli-reference#cli-flags)。Claude Code 不會阻止您,兩個程序接著會寫入同一個對話。如果您不確定,請加入 `--fork-session`,它會在對話的副本中繼續,但兩個程序仍會處理相同的檔案。
1108</Warning>1260</Warning>
1109 1261
1110<h4 id="choose-where-ssh-session-worktrees-go">1262<h4 id="choose-where-ssh-session-worktrees-go">
1111 選擇 SSH 工作階段 worktree 的位置1263 選擇 SSH 工作階段 worktree 的位置
1112</h4>1264</h4>
1113 1265
1114除非您的組織限制工作階段可使用的資料夾,否則新的 SSH 工作階段會在以下項目中第一個已設定的位置建立其 [worktree](#work-in-parallel-with-sessions):1266除非您的組織限制工作階段可使用的資料夾,否則新的 SSH 工作階段會在下列項目中第一個已設定的位置建立其 [worktree](#work-in-parallel-with-sessions):
1115 1267
11161. SSH 連線上的 **Worktree folder**12681. SSH 連線上的 **Worktree folder**
11172. 遠端機器上 `~/.claude/settings.json` 中的 [`worktree.location`](/docs/zh-TW/settings-reference#worktree-location)12692. 遠端機器上 `~/.claude/settings.json` 中的 [`worktree.location`](/docs/zh-TW/settings-reference#worktree-location)
11183. `<project-root>/.claude/worktrees/`,即預設值12703. `<project-root>/.claude/worktrees/`,即預設值
1119 1271
1120每個專案會在您設定的資料夾中擁有自己的子資料夾,因此若設定為 `~/worktrees`,worktree 的路徑為 `~/worktrees/<project>-<id>/<worktree-name>`。如果您設定的資料夾位於專案內,Desktop 會對該專案忽略它並使用預設值。在 [Windows 遠端機器](#windows-remote-machines)上,Desktop 一律使用預設值。1272每個專案會在您設定的資料夾中取得自己的子資料夾,因此使用 `~/worktrees` 時,worktree 的路徑為 `~/worktrees/<project>-<id>/<worktree-name>`。如果您設定的資料夾位於專案內,Desktop 會對該專案忽略它並使用預設值。在 [Windows 遠端機器](#windows-remote-machines)上,Desktop 一律使用預設值。
1121 1273
1122若要在您先前新增的連線或您組織管理的連線上設定 **Worktree folder**,請在環境下拉式選單中將滑鼠懸停在該連線上,然後點擊齒輪圖示。1274若要在您先前新增的連線或您組織管理的連線上設定 **Worktree folder**,請在環境下拉選單中將滑鼠游標停在該連線上,然後按一下齒輪圖示。
1123 1275
1124此欄位需要 Claude Desktop v1.44121.0 或更新版本。如果您的組織限制工作階段可使用的資料夾,Desktop 會隱藏此欄位,並將 worktree 保留在專案內。1276此欄位需要 Claude Desktop v1.44121.0 或更新版本。如果您的組織限制工作階段可使用的資料夾,Desktop 會隱藏此欄位,並將 worktree 保留在專案內。
1125 1277
1127 遠端機器上的檔案和程序1279 遠端機器上的檔案和程序
1128</h4>1280</h4>
1129 1281
1130Desktop 會在每位連接到 Linux 或 macOS 遠端機器之使用者的家目錄下的 `~/.claude/remote/` 安裝輔助程式和 Claude Code。輔助程式不會監聽任何網路連接埠,但 Claude Code 及其啟動的程式(例如 MCP 伺服器和開發伺服器)可能會。1282Desktop 會在每位連線到 Linux 或 macOS 遠端機器的使用者家目錄中,於 `~/.claude/remote/` 下安裝輔助程式和 Claude Code。輔助程式不會監聽任何網路連接埠,但 Claude Code 及其啟動的程式(例如 MCP 伺服器和開發伺服器)可能會。
1131 1283
1132| 資料夾 | 內容 |1284| 資料夾 | 內容 |
1133| - | - |1285| - | - |
1134| `~/.claude/remote/srv/` | 輔助程式,每個版本一個資料夾 |1286| `~/.claude/remote/srv/` | 輔助程式,每個版本一個資料夾 |
1135| `~/.claude/remote/ccd-cli/` | Claude Code,每個版本一個檔案 |1287| `~/.claude/remote/ccd-cli/` | Claude Code,每個版本一個檔案 |
1136| `~/.claude/remote/run/` | 輔助程式的執行階段檔案,例如其 socket 和日誌,每台連接的電腦一個資料夾 |1288| `~/.claude/remote/run/` | 輔助程式的執行階段檔案,例如其 socket 和日誌,每台連線的電腦一個資料夾 |
1137| `~/.claude/remote/plugins/` | Desktop 從使用者電腦複製的外掛 |1289| `~/.claude/remote/plugins/` | Desktop 從使用者電腦複製的外掛 |
1138| [`~/.claude/uploads/`](/docs/zh-TW/claude-directory#clear-local-data) | 使用者附加到訊息的檔案,每個工作階段一個資料夾 |1290| [`~/.claude/uploads/`](/docs/zh-TW/claude-directory#clear-local-data) | 使用者附加到訊息的檔案,每個工作階段一個資料夾 |
1139 1291
1140若要列出某位使用者的程序,請以該使用者身分在遠端機器上執行 `pgrep -fl "$HOME/.claude/remote/"`,或將 `$HOME` 替換為該使用者的家目錄:1292若要列出某位使用者的程序,請以該使用者身分在遠端機器上執行 `pgrep -fl "$HOME/.claude/remote/"`,或以該使用者的家目錄取代 `$HOME`:
1141 1293
1142* **輔助程式**:每台連接的電腦有一個或多個 `server` 程序1294* **輔助程式**:每台連線的電腦會有一個或多個 `server` 程序
1143* **Claude Code**:輔助程式為使用者的工作階段啟動的程序,每個都來自以其版本命名的檔案,例如 `2.1.295-…`1295* **Claude Code**:輔助程式為使用者工作階段啟動的程序,每個程序都來自以其版本命名的檔案,例如 `2.1.295-…`
1144 1296
1145Desktop 透過使用者的 SSH 連線,經由 `~/.claude/remote/run/` 下輔助程式資料夾中的 Unix socket `rpc.sock` 連接輔助程式。除了 root 之外,機器上的其他使用者無法連接到該 socket,因為它的模式為 600,且其資料夾的模式為 700。1297Desktop 透過使用者的 SSH 連線,經由輔助程式在 `~/.claude/remote/run/` 下資料夾中的 Unix socket `rpc.sock` 連線到輔助程式。除了 root 之外,機器上的其他使用者無法連線到該 socket,因為它的模式為 600,且其資料夾的模式為 700。
1146 1298
1147關於輔助程式何時會自行停止,請參閱 [Desktop 中斷連線時的限制](#limits-while-desktop-is-disconnected)。1299如需輔助程式何時會自行停止,請參閱 [Desktop 中斷連線時的限制](#limits-while-desktop-is-disconnected)。
1148 1300
1149若要為某位使用者移除輔助程式和 Claude Code:1301若要為某位使用者移除輔助程式和 Claude Code:
1150 1302
1151<Steps>1303<Steps>
1152 <Step title="結束 Desktop">1304 <Step title="結束 Desktop">
1153 在該使用者用來連接的每台電腦上結束 Desktop。Desktop 會在下次連接時再次安裝這兩個程式,且它可能會自行重新連線。1305 在該使用者連線來源的每台電腦上結束 Desktop。Desktop 會在下次連線時再次安裝這兩個程式,而且它可能會自行重新連線。
1154 </Step>1306 </Step>
1155 1307
1156 <Step title="結束程序">1308 <Step title="終止程序">
1157 以該使用者身分登入遠端機器,對 [`pgrep`](#files-and-processes-on-the-remote-machine) 列出的每個程序 ID 執行 `kill`。1309 以該使用者身分登入遠端機器,對 [`pgrep`](#files-and-processes-on-the-remote-machine) 列出的每個 Claude Code 程序 ID 執行 `kill`。當這些程序從清單中消失後,再對每個 `server` 程序的 ID 執行 `kill`。如果您先終止 `server` 程序,Claude Code 正在執行的命令可能會繼續執行。
1310
1311 然後列出該使用者剩餘的程序,例如使用 `ps -u "$(id -un)" -f`,並終止您認得是由 Claude Code 啟動的任何程序。它留在背景的程式可能在其結束後繼續執行,且不會出現在 `pgrep` 清單中。
1158 </Step>1312 </Step>
1159 1313
1160 <Step title="刪除資料夾">1314 <Step title="刪除資料夾">
1161 刪除 `~/.claude/remote/`。若要移除 Claude Code 本身位於 `~/.claude/` 和 `~/.claude.json` 的檔案,請參閱[移除設定檔](/docs/zh-TW/setup#remove-configuration-files)。1315 刪除 `~/.claude/remote/`。若要移除 Claude Code 本身在 `~/.claude/` 和 `~/.claude.json` 中的檔案,請參閱[移除設定檔](/docs/zh-TW/setup#remove-configuration-files)。
1162 </Step>1316 </Step>
1163</Steps>1317</Steps>
1164 1318
1165<h5 id="end-one-session’s-process">1319<h5 id="end-one-session’s-process">
1166 結束單一工作階段的程序1320 終止單一工作階段的程序
1321</h5>
1322
1323若要終止單一工作階段的 Claude Code 程序,請在 Desktop 連線到遠端機器時,在 Desktop 中[封存該工作階段](#work-in-parallel-with-sessions)。該程序在任務完成後以及您結束 Desktop 後都會繼續執行。
1324
1325在封存具有 worktree 的工作階段之前,請參閱[使用工作階段平行作業](#work-in-parallel-with-sessions)。
1326
1327<h5 id="see-which-user-the-processes-run-as">
1328 查看程序以哪位使用者身分執行
1167</h5>1329</h5>
1168 1330
1169若要結束單一工作階段的 Claude Code 程序,請在 Desktop 已連接到遠端機器時,於 Desktop 中[封存該工作階段](#work-in-parallel-with-sessions)。該程序在其任務完成後以及您結束 Desktop 後仍會持續執行。1331輔助程式和 Claude Code 會以 Desktop 透過 SSH 登入的使用者身分執行。安裝和啟動它們不需要 `sudo`。若要檢查使用者,請在遠端機器上以 [`pgrep`](#files-and-processes-on-the-remote-machine) 列出的程序 ID 執行 `ps -o user= -p`。
1170 1332
1171在封存具有 worktree 的工作階段之前,請參閱[使用工作階段平行工作](#work-in-parallel-with-sessions)。1333Claude Code 啟動的程式(例如 shell 命令和 MCP 伺服器)也會以該使用者身分啟動。請審查該使用者在遠端機器上的權限(包括其 `sudo` 規則),就像審查在該處執行命令的人員一樣。
1172 1334
1173<h5 id="see-who-connected-to-the-remote-machine">1335<h5 id="see-who-connected-to-the-remote-machine">
1174 查看誰連接到遠端機器1336 查看誰連線到遠端機器
1337</h5>
1338
1339若要了解誰連線到遠端機器,請讀取該機器上 SSH 伺服器的日誌,其中來自 Desktop 的登入看起來與來自終端機的登入相同。Desktop 在 macOS 或 Linux 上時,預期每次 Desktop 連線會有一筆記錄,而不是每個工作階段一筆。
1340
1341您在 Claude Code 的[指標與事件](/docs/zh-TW/monitoring-usage#available-metrics-and-events)中找不到 Desktop 的 SSH 連線。若要從中得知 SSH 工作階段在哪台遠端機器上執行,請參閱[將遙測歸因於 Desktop SSH 工作階段](/docs/zh-TW/monitoring-usage#attribute-telemetry-to-desktop-ssh-sessions)。關於 Desktop 自身的連線記錄,請參閱[取得 SSH 問題的 Desktop 日誌](#get-desktops-logs-for-an-ssh-problem)。
1342
1343<h4 id="connections-that-close-before-login">
1344 登入前即關閉的連線
1345</h4>
1346
1347若 SSH 伺服器的日誌顯示在任何登入之前即關閉的連線,這些可能是 Desktop 對 SSH 連接埠的測試。Desktop 會測試機器是否有回應,例如在連線至該機器失敗之後。它會開啟至該連接埠的連線並立即關閉,不傳送任何內容。預期會有一次或連續數次測試,例如約兩分鐘內八次。
1348
1349若沒有任何機制因此類連線而封鎖或拒絕位址,您不需要對 Desktop 的測試採取任何行動。若 Desktop 連線所用的位址遭到拒絕或封鎖,請檢查 [SSH 伺服器本身是否拒絕該位址](#check-whether-the-ssh-server-itself-refuses-the-address),以及 [fail2ban 是否計入 Desktop 的測試](#check-whether-fail2ban-counts-desktops-tests)。
1350
1351<h5 id="recognize-a-test-in-the-ssh-server’s-log">
1352 在 SSH 伺服器的日誌中辨識測試
1175</h5>1353</h5>
1176 1354
1177若要查出誰連接到遠端機器,請讀取該機器上 SSH 伺服器的日誌,其中來自 Desktop 的登入看起來就像來自終端機的登入。Desktop 在 macOS 或 Linux 上時,預期每次 Desktop 連接都會有一筆項目,而不是每個工作階段一筆。1355請將您日誌中的行,與 Linux 上的 OpenSSH 伺服器在預設 `LogLevel` 下為測試寫入的行進行比較,並對照您伺服器版本所在的列。若伺服器的問候訊息在 Desktop 關閉連線之前送達,您可能會看到最後一欄中的行:
1356
1357| OpenSSH 版本 | 測試的行 | 問候訊息先送達時的行 |
1358| - | - | - |
1359| 6.6 至 7.9 | 含有 `Did not receive identification string from 203.0.113.7` 的行 | 相同的行 |
1360| 8.0 至 8.2 | `error: kex_exchange_identification: Connection closed by remote host` | `error: kex_exchange_identification: read: Connection reset by peer` |
1361| 8.3 至 9.4 | `error: kex_exchange_identification: Connection closed by remote host`,接著是 `Connection closed by 203.0.113.7 port 51234` | `error: kex_exchange_identification: read: Connection reset by peer`,接著是 `Connection reset by 203.0.113.7 port 51234` |
1362| 9.5 至 10.2 | `Connection closed by 203.0.113.7 port 51234` | `error: kex_exchange_identification: read: Connection reset by peer`,接著是 `Connection reset by 203.0.113.7 port 51234` |
1363| 10.3 至 10.5 | `Connection closed by 203.0.113.7 port 51234 [preauth]` | `error: kex_exchange_identification: read: Connection reset by peer [preauth]`,接著是 `Connection reset by 203.0.113.7 port 51234 [preauth]` |
1364
1365其他開啟並關閉該連接埠的程式也可能留下相同的行。若行中有位址,請確認它是執行 Desktop 的電腦所連線的位址。
1366
13678.0 至 8.2 的行沒有位址。若要取得位址,請在 `sshd_config` 中設定 `LogLevel VERBOSE`,並以 root 身分執行 `sshd -T | grep -i loglevel`。若輸出 `loglevel VERBOSE`,請重新載入 SSH 伺服器。然後在測試的行之前尋找含有 `Connection from 203.0.113.7 port 51234` 的行。
1368
1369<a id="check-whether-the-ssh-server-itself-refuses-the-address" />
1370
1371<h5 id="check-whether-the-ssh-server-itself-refuses-the-address">
1372 檢查 SSH 伺服器本身是否拒絕該位址
1373</h5>
1374
1375若來自許多執行 Desktop 的電腦共用之位址的連線遭到拒絕,請在 SSH 伺服器的日誌中尋找結尾類似下列內容的行:
1376
1377```text theme={null}
1378drop connection #0 from [203.0.113.7]:51234 on [192.0.2.10]:22 penalty: connections without attempting authentication
1379```
1380
1381在預設 `LogLevel` 下,OpenSSH 9.8 及更新版本在因連線未嘗試登入即關閉(如 Desktop 的測試)而拒絕某個位址時,可能會寫入這樣的行。在預設設定下,僅憑幾次測試不會出現這樣的行。
1382
1383若要防止拒絕,請在 `sshd_config` 中將 `PerSourcePenaltyExemptList` 設為使用者連線所用的位址,例如 `PerSourcePenaltyExemptList 203.0.113.7`。伺服器接著不會對這些位址套用任何懲罰,包括針對登入失敗的懲罰。若要檢查該檔案,請以 root 身分執行 `sshd -T | grep -i persourcepenalt`。若輸出您的清單,請重新載入 SSH 伺服器。
1384
1385<a id="check-whether-fail2ban-counts-desktops-tests" />
1386
1387<h5 id="check-whether-fail2ban-counts-desktop’s-tests">
1388 檢查 fail2ban 是否計入 Desktop 的測試
1389</h5>
1390
1391若 fail2ban 0.10.5 或更新版本封鎖了 Desktop 連線所用的位址,請在 `jail.conf`、`jail.local` 或 `jail.d/` 下找出您 jail 的模式:
1392
1393* **在括號中指定模式的 `filter` 行**,例如 `filter = sshd[mode=aggressive]`:使用該模式。
1394* **只有原始的 `filter` 行**,含有 `[mode=%(mode)s]`:使用 `mode` 行,若沒有則為 `normal`。
1395
1396若模式為 `normal`,fail2ban 不會計入 Desktop 測試的行,因此請尋找封鎖的其他原因。
1397
1398若為其他模式,請將您自己日誌中的行複製到遠端機器上的檔案。複製每一行的完整內容,從日期到結尾;若測試留下兩行,則兩行都複製。在該處以該檔案與您 jail 的模式(例如 `aggressive`)執行 `fail2ban-regex`:
1399
1400```bash theme={null}
1401fail2ban-regex -o ip lines.log "sshd[mode=aggressive]"
1402```
1403
1404對於 fail2ban 計入的每次失敗,該命令會在單獨一行輸出位址,例如 `203.0.113.7`。在此情況下,請[防止封鎖](#prevent-a-ban-by-fail2ban)。若沒有輸出任何內容,表示 fail2ban 在該模式下不會計入這些行,因此請尋找封鎖的其他原因。
1405
1406<a id="prevent-a-ban-by-fail2ban" />
1407
1408<h5 id="prevent-a-ban-by-fail2ban">
1409 防止 fail2ban 封鎖
1410</h5>
1411
1412若要防止 fail2ban 因 Desktop 的測試而封鎖某個位址,請變更 jail 的兩項設定之一,兩者各有代價:
1413
1414* **`mode`**:在您 jail 設定它的任何位置將其設為 `normal`,無論是在 `mode` 行中,或在 `filter = sshd[mode=aggressive]` 這類行的括號中。您會放棄只有其他模式才會進行的所有計數,例如對未嘗試登入即連線並離開之用戶端的計數。
1415* **`ignoreip`**:將其設為使用者連線所用的位址,例如 `ignoreip = 203.0.113.7`。fail2ban 接著不會計入來自這些位址的任何內容,包括登入失敗。
1178 1416
1179<h4 id="use-mcp-servers-set-up-on-the-remote-machine">1417<h4 id="use-mcp-servers-set-up-on-the-remote-machine">
1180 使用在遠端機器上設定的 MCP 伺服器1418 使用在遠端機器上設定的 MCP 伺服器
1181</h4>1419</h4>
1182 1420
1183若要在 SSH 工作階段中使用來自 `~/.claude.json` 或專案 `.mcp.json` 的 [MCP 伺服器](/docs/zh-TW/mcp),請在遠端機器上的這些檔案中設定它。Claude Code 會在該處啟動其 stdio 伺服器,因此請在遠端機器上安裝這些伺服器所執行的命令。關於來自 `claude_desktop_config.json` 的伺服器,請參閱 [Desktop 中斷連線時的限制](#limits-while-desktop-is-disconnected)。1421若要在 SSH 工作階段中使用來自 `~/.claude.json` 或專案 `.mcp.json` 的 [MCP 伺服器](/docs/zh-TW/mcp),請在遠端機器上的這些檔案中設定它。Claude Code 會在該處啟動它們的 stdio 伺服器,因此請在遠端機器上安裝這些伺服器所執行的命令。如需來自 `claude_desktop_config.json` 的伺服器,請參閱 [Desktop 中斷連線時的限制](#limits-while-desktop-is-disconnected)。
1184 1422
1185<h4 id="open-an-ssh-session-from-a-link">1423<h4 id="open-an-ssh-session-from-a-link">
1186 從連結開啟 SSH 工作階段1424 從連結開啟 SSH 工作階段
1187</h4>1425</h4>
1188 1426
1189`claude://code/new` 連結會開啟 Desktop 的新工作階段頁面,且可以指定一個 SSH 連線。將此類連結放在操作手冊、儀表板或 wiki 頁面中,即可開啟已針對正確機器和資料夾設定好的 Desktop。對於會移除此類連結的平台,請參閱[連結顯示為純文字而無法點擊](/docs/zh-TW/deep-links#the-link-renders-as-plain-text-instead-of-being-clickable)。1427`claude://code/new` 連結會開啟 Desktop 的新工作階段頁面,且可以指定 SSH 連線。將此類連結放在執行手冊、儀表板或 wiki 頁面中,即可開啟已針對正確機器和資料夾設定好的 Desktop。對於會移除此類連結的平台,請參閱[連結顯示為純文字而非可點選的連結](/docs/zh-TW/deep-links#the-link-renders-as-plain-text-instead-of-being-clickable)。
1190 1428
1191SSH 連結需要 Claude Desktop v2.110.0 或更新版本。1429SSH 連結需要 Claude Desktop v2.110.0 或更新版本。
1192 1430
1193以下連結指定了 `build.example.com` 上的使用者 `dev`、連接埠 2222 和資料夾 `/srv/payments`,並填入提示詞:1431下列連結指定了 `build.example.com` 上的使用者 `dev`、連接埠 2222 和資料夾 `/srv/payments`,並填入提示詞:
1194 1432
1195```text theme={null}1433```text theme={null}
1196claude://code/new?ssh_host=dev%40build.example.com&ssh_port=2222&ssh_folder=/srv/payments&q=Investigate%20the%20failed%20deploy1434claude://code/new?ssh_host=dev%40build.example.com&ssh_port=2222&ssh_folder=/srv/payments&q=Investigate%20the%20failed%20deploy
1197```1435```
1198 1436
1199SSH 連結接受以下參數,其中只有 `ssh_host` 為必要:1437SSH 連結接受下列參數,其中只有 `ssh_host` 為必要參數:
1200 1438
1201| 參數 | 值 |1439| 參數 | 值 |
1202| :- | :- |1440| :- | :- |
1203| `ssh_host` | `host` 或 `user@host`,寫法與 **SSH host** 欄位相同。值不能以 `-` 開頭,且主機部分只接受字母、數字、`.`、`_`、`:` 和 `-` |1441| `ssh_host` | `host` 或 `user@host`,寫法與 **SSH host** 欄位相同。值不能以 `-` 開頭,且主機部分只接受字母、數字、`.`、`_`、`:` 和 `-` |
1204| `ssh_port` | 1 到 65535 之間的連接埠號碼 |1442| `ssh_port` | 1 到 65535 之間的連接埠號碼 |
1205| `ssh_folder` | 遠端機器上的資料夾。以 `/` 或 `~/` 開頭,或使用 `~` |1443| `ssh_folder` | 遠端機器上的資料夾。以 `/` 或 `~/` 開頭,或使用 `~` |
1206| `q` | 提示詞輸入框的 URL 編碼文字 |1444| `q` | 要填入提示詞方塊的 URL 編碼文字 |
1207 1445
1208來自 `~/.ssh/config` 的別名只對擁有該項目的人才能作為 `ssh_host` 使用。若要符合其他人已有的連線,請讓連結使用與該連線相同的使用者、主機和連接埠。1446來自 `~/.ssh/config` 的別名只有對擁有該項目的人才能作為 `ssh_host` 使用。若要符合人們已有的連線,請為連結提供與該連線相同的使用者、主機和連接埠。
1209 1447
1210當您開啟連結時,Desktop 會在選擇連線前要求您確認:1448當您開啟連結時,Desktop 會在選取連線之前要求您確認:
1211 1449
1212* **您已有的連線**:如果主機、使用者和連接埠與您的某個連線相符,Desktop 會詢問是否使用它,並顯示該連線的名稱和主機,以及連結中指定的資料夾(如果有)。1450* **您已有的連線**:如果主機、使用者和連接埠與您的其中一個連線相符,Desktop 會詢問是否使用該連線,並顯示連線的名稱和主機,以及連結指定的資料夾(若有)。
1213* **新連線**:否則 Desktop 會開啟新增 SSH 連線的對話框。當您新增連線時,Desktop 會在儲存任何內容前詢問是否連接,並顯示連結中的主機,以及連結中指定的連接埠和資料夾(如果有)。1451* **新連線**:否則 Desktop 會開啟新增 SSH 連線的對話方塊。當您新增連線時,Desktop 會在儲存任何內容之前詢問是否連線,並顯示連結中的主機,以及連結指定的連接埠和資料夾(若有)。
1214 1452
1215在您確認之前,Desktop 不會儲存連結中的主機、連接埠或資料夾,也不會以它們選擇或開啟連線。如果已選擇了某個 SSH 連線,新工作階段頁面仍可自行連接到該連線,就像沒有連結時一樣,即使連結指定的是相同主機也是如此。連結無法攜帶金鑰檔案、密碼或命令。1453在您確認之前,Desktop 不會儲存連結中的主機、連接埠或資料夾,也不會以它們選取或開啟連線。如果已選取某個 SSH 連線,新工作階段頁面仍可能自行連線到該連線,就像沒有連結時一樣,即使連結指定的是相同的主機。連結無法攜帶金鑰檔案、密碼或命令。
1216 1454
1217任何人都可以撰寫連結,因此請檢查它填入的內容:1455任何人都可以撰寫連結,因此請檢查它填入了什麼:
1218 1456
1219* **確認之前**:檢查主機和資料夾。1457* **確認之前**:檢查主機和資料夾。
1220* **傳送之前**:檢查提示詞和所選的環境。1458* **傳送之前**:檢查提示詞和所選的環境。
1221 1459
1222Desktop 會在連結開啟時填入提示詞,取代您尚未傳送的任何文字,且絕不會替您傳送。它將提示詞視為純文字,因此開頭的 `/` 或 `!` 以及 `@` 檔案提及不會作為命令或提及生效。如果您取消,提示詞會保留在輸入框中,且您先前選擇的環境不會改變。1460Desktop 會在連結開啟時填入提示詞,取代您尚未傳送的任何文字,且絕不會代您傳送。它會將提示詞視為純文字,因此開頭的 `/` 或 `!` 以及 `@` 檔案提及不會作為命令或提及。如果您取消,提示詞會保留在方塊中,且您原先選取的環境不會變更。
1223 1461
1224連結不會繞過 [`sshHostAllowlist`](#restrict-which-ssh-hosts-users-can-connect-to)。Desktop 會在連接時檢查允許清單。1462連結不會繞過 [`sshHostAllowlist`](#restrict-which-ssh-hosts-users-can-connect-to)。Desktop 會在連線時檢查允許清單。
1225 1463
1226如果連結開啟 Desktop 時沒有出現關於連線的對話框,請檢查是否為以下原因之一:1464如果連結開啟 Desktop 時沒有出現有關連線的對話方塊,請查看是否為下列原因之一:
1227 1465
1228* **您已登出**:請登入,然後再次開啟連結。1466* **您已登出**:請登入,然後再次開啟連結。
1229* **另一個對話框已開啟**:請將其關閉,然後再次開啟連結。1467* **另一個對話方塊已開啟**:請關閉它,然後再次開啟連結。
1230* **連結無效**:Desktop 會顯示一則訊息說明需要修正的內容,且不會填入提示詞。1468* **連結無效**:Desktop 會顯示說明需修正內容的訊息,且不會填入提示詞。
1231* **Desktop 版本早於 v2.110.0**:較早的版本會忽略 SSH 參數,並僅以提示詞開啟新工作階段頁面。1469* **Desktop 版本早於 v2.110.0**:較早的版本會忽略 SSH 參數,並只以提示詞開啟新工作階段頁面。
1232* **SSH 工作階段已關閉**:如果您的管理員將允許清單設定為空陣列,Desktop 會拒絕 SSH 連結。1470* **SSH 工作階段已關閉**:如果您的管理員將允許清單設為空陣列,Desktop 會拒絕 SSH 連結。
1233 1471
1234<h4 id="pre-configure-ssh-connections-for-your-team">1472<h4 id="pre-configure-ssh-connections-for-your-team">
1235 為您的團隊預先配置 SSH 連線1473 為您的團隊預先設定 SSH 連線
1236</h4>1474</h4>
1237 1475
1238管理員可以透過在[受管設定](/docs/zh-TW/managed-settings)中設定 `sshConfigs`,將 SSH 連線分發給團隊成員。以這種方式定義的連線會自動出現在每個使用者的環境下拉式選單中,並顯示為受管。使用者可以選擇它們,並為它們[設定自己的 **Worktree folder**](#choose-where-ssh-session-worktrees-go),但無法在應用程式中編輯其他任何內容或刪除它們。1476管理員可以在[受管設定](/docs/zh-TW/managed-settings)中設定 `sshConfigs`,將 SSH 連線分發給團隊成員。以此方式定義的連線會自動出現在每位使用者的環境下拉選單中,並顯示為受管連線。使用者可以選取它們並為它們[設定自己的 **Worktree folder**](#choose-where-ssh-session-worktrees-go),但無法在應用程式中編輯其他任何內容或刪除它們。
1239 1477
1240以下範例預先配置了一個單一連線:1478下列範例預先設定了單一連線:
1241 1479
1242```json theme={null}1480```json theme={null}
1243{1481{
1253}1491}
1254```1492```
1255 1493
1256每個項目都需要 `id`、`name` 和 `sshHost`。`sshPort` 和 `sshIdentityFile` 欄位是選用的。使用者也可以將 `sshConfigs` 新增到他們自己的 `~/.claude/settings.json`。1494每個項目都需要 `id`、`name` 和 `sshHost`。`sshPort` 和 `sshIdentityFile` 欄位為選用。使用者也可以將 `sshConfigs` 加入自己的 `~/.claude/settings.json`。
1257 1495
1258如果您在 `sshHost` 中省略 `user@`,Desktop 會以每位開發人員的 `~/.ssh/config` 為該主機設定的 `User` 連接,否則會以他們在自己電腦上的使用者名稱連接。1496如果您在 `sshHost` 中省略 `user@`,Desktop 會以每位開發人員的 `~/.ssh/config` 為該主機設定的 `User` 連線,否則以他們在自己電腦上的使用者名稱連線。
1259 1497
1260<h4 id="restrict-which-ssh-hosts-users-can-connect-to">1498<h4 id="restrict-which-ssh-hosts-users-can-connect-to">
1261 限制使用者可以連接的 SSH 主機1499 限制使用者可連線的 SSH 主機
1262</h4>1500</h4>
1263 1501
1264管理員可以透過在[受管設定](/docs/zh-TW/managed-settings)中設定 `sshHostAllowlist`,將 Desktop 的 SSH 工作階段限制在已核准的主機集合。設定後,使用者只能連接到其解析的主機名稱與其中一個模式相符的主機。將其設定為空陣列以停用 SSH 工作階段。[`sshHostAllowlist` 參考項目](/docs/zh-TW/settings-reference#sshhostallowlist)說明了空陣列如何與其他受管來源中的清單結合。1502管理員可以在[受管設定](/docs/zh-TW/managed-settings)中設定 `sshHostAllowlist`,將 Desktop 的 SSH 工作階段限制在一組核准的主機。設定後,使用者只能連線到解析後主機名稱符合其中一個模式的主機。將其設為空陣列即可停用 SSH 工作階段。[`sshHostAllowlist` 參考項目](/docs/zh-TW/settings-reference#sshhostallowlist)說明空陣列如何與其他受管來源中的清單合併。
1265 1503
1266以下範例允許連接到 `devboxes.example.com` 下的任何主機以及單一命名的堡壘主機:1504下列範例允許連線到 `devboxes.example.com` 下的任何主機,以及單一指定的堡壘主機:
1267 1505
1268```json theme={null}1506```json theme={null}
1269{1507{
1272```1510```
1273 1511
1274<Warning>1512<Warning>
1275 如果您的組織提供[伺服器管理設定](/docs/zh-TW/server-managed-settings),請在那裡設定 `sshHostAllowlist`。預設情況下,Desktop 只會從[提供政策鍵的最高優先順序受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)讀取此鍵。如果該來源未設定此鍵,Desktop 會忽略較低優先順序的 MDM 政策或受管設定檔中的清單,並將此鍵視為[未設定](/docs/zh-TW/settings-reference#sshhostallowlist)。Desktop 不會顯示任何警告。1513 如果您的組織提供[伺服器管理的設定](/docs/zh-TW/server-managed-settings),請在該處設定 `sshHostAllowlist`。預設情況下,Desktop 只會從[提供政策鍵的最高排名受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)讀取此鍵。如果該來源未設定此鍵,Desktop 會忽略較低排名的 MDM 政策或受管設定檔中的清單,並將此鍵視為[未設定](/docs/zh-TW/settings-reference#sshhostallowlist)。Desktop 不會顯示任何警告。
1276 1514
1277 此外,也請在每位使用者的機器上,於該處最高優先順序的 MDM 政策或受管設定檔中保留相同的清單。Desktop 會在啟動時擷取伺服器管理設定,且不保留快取副本,因此在擷取成功之前,套用的是該機器上的清單。1515 也請在每位使用者機器上的最高排名 MDM 政策或受管設定檔中保留相同的清單。Desktop 會在啟動時擷取伺服器管理的設定,且不會保留快取副本,因此在擷取成功之前,套用的是機器上的清單。
1278</Warning>1516</Warning>
1279 1517
1280模式不區分大小寫。`*` 符合任何主機,`*.example.com` 符合 `example.com` 和任何子網域。其他任何內容都是精確符合。檢查會針對透過 `ssh -G` 進行 `~/.ssh/config` 解析後的主機名稱執行,因此允許 `Host` 別名和 `ProxyCommand`/`ProxyJump` 項目,只要解析的 `HostName` 相符即可。1518模式不區分大小寫。`*` 符合任何主機,而 `*.example.com` 符合 `example.com` 及其任何子網域。其他任何內容都是完全比對。檢查會針對透過 `ssh -G` 進行 `~/.ssh/config` 解析後的主機名稱執行,因此只要解析後的 `HostName` 相符,就允許 `Host` 別名和 `ProxyCommand`/`ProxyJump` 項目。
1281 1519
1282`sshHostAllowlist` 僅從受管設定讀取;使用者或專案設定中的值會被忽略。只有 Claude Desktop 應用程式遵守此設定;Claude Code CLI 和 IDE 擴充功能不讀取它,它也不限制透過 Bash 工具執行的 `ssh` 命令。它控制 Desktop 應用程式連接的主機,而不是網路出口,因此如果您需要硬邊界,請將其與您組織的網路或零信任控制配對。1520`sshHostAllowlist` 只會從受管設定讀取;使用者或專案設定中的值會被忽略。只有 Claude Desktop 應用程式會遵循此設定;Claude Code CLI 和 IDE 擴充功能不會讀取它,且它不會限制透過 Bash 工具執行的 `ssh` 命令。它管理的是 Desktop 應用程式會連線到哪些主機,而不是網路出口流量,因此如果您需要硬性邊界,請將它與您組織的網路或零信任控制措施搭配使用。
1283 1521
1284<h4 id="turn-off-local-sessions-and-distribute-ssh-connections">1522<h4 id="turn-off-local-sessions-and-distribute-ssh-connections">
1285 關閉本機工作階段並分發 SSH 連線1523 關閉本機工作階段並分發 SSH 連線
1286</h4>1524</h4>
1287 1525
1288若要關閉本機工作階段,並將 SSH 工作階段限制在您選擇的主機,請同時部署 [`disableDesktopLocalSessions`](/docs/zh-TW/settings-reference#disabledesktoplocalsessions)、[`sshConfigs`](#pre-configure-ssh-connections-for-your-team) 和 [`sshHostAllowlist`](#restrict-which-ssh-hosts-users-can-connect-to)。1526若要關閉本機工作階段並將 SSH 工作階段限制在您選擇的主機,請同時部署 [`disableDesktopLocalSessions`](/docs/zh-TW/settings-reference#disabledesktoplocalsessions)、[`sshConfigs`](#pre-configure-ssh-connections-for-your-team) 和 [`sshHostAllowlist`](#restrict-which-ssh-hosts-users-can-connect-to)。
1289 1527
1290<Note>1528<Note>
1291 此設定適用於以 Claude 帳戶登入的使用者。使用[第三方供應商](/docs/zh-TW/third-party-integrations)時,SSH 工作階段預設為關閉,而設定 `sshHostAllowlist` 可以將其開啟。部署這些鍵之前,請先閱讀 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。1529 此設定適用於使用 Claude 帳戶登入的使用者。使用[第三方供應商](/docs/zh-TW/third-party-integrations)時,SSH 工作階段預設為關閉,而設定 `sshHostAllowlist` 可以開啟它們。部署這些鍵之前,請閱讀 [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。
1292</Note>1530</Note>
1293 1531
1294以下範例會關閉本機工作階段、新增一個連線,並將 SSH 工作階段限制在該連線的主機:1532下列範例關閉本機工作階段、新增一個連線,並將 SSH 工作階段限制在該連線的主機:
1295 1533
1296```json managed-settings.json theme={null}1534```json managed-settings.json theme={null}
1297{1535{
1311 1549
1312* **CLI**:這些鍵都無法阻止開發人員在自己的電腦上執行 Claude Code CLI1550* **CLI**:這些鍵都無法阻止開發人員在自己的電腦上執行 Claude Code CLI
1313* **Cowork**:這些鍵都不適用於 [Cowork](https://claude.com/docs/cowork/overview) 工作階段或 Cowork 排程任務1551* **Cowork**:這些鍵都不適用於 [Cowork](https://claude.com/docs/cowork/overview) 工作階段或 Cowork 排程任務
1314* **雲端工作階段**:這些鍵都不會改變[雲端工作階段](#cloud-sessions)是否可用。若要將其關閉,請使用 [Admin console 控制項](#admin-console-controls)下的 **Cloud sessions** 設定。1552* **雲端工作階段**:這些鍵都不會改變[雲端工作階段](#cloud-sessions)是否可用。若要關閉它們,請使用 [Admin console 控制項](#admin-console-controls)下的 **Cloud sessions** 設定。
1315 1553
1316調整此範例時,請檢查主機名稱、Desktop 版本和檔案的權限:1554調整範例時,請檢查主機名稱、Desktop 版本和檔案權限:
1317 1555
1318* **主機名稱**:請確保 `sshHostAllowlist` 中有一個模式符合每個 `sshConfigs` 項目的主機名稱(不含 `user@`),否則開發人員將無法連接到它。有關 Desktop 如何比對主機名稱,請參閱[限制使用者可以連接的 SSH 主機](#restrict-which-ssh-hosts-users-can-connect-to)。1556* **主機名稱**:確保 `sshHostAllowlist` 中的某個模式符合每個 `sshConfigs` 項目的主機名稱(不含 `user@`),否則開發人員無法連線到它。如需 Desktop 如何比對主機名稱,請參閱[限制使用者可連線的 SSH 主機](#restrict-which-ssh-hosts-users-can-connect-to)。
1319* **版本**:`disableDesktopLocalSessions` 需要 Claude Desktop v1.37937.0 或更新版本1557* **版本**:`disableDesktopLocalSessions` 需要 Claude Desktop v1.37937.0 或更新版本
1320* **檔案權限**:請確保每位開發人員在電腦上的帳戶可以讀取受管設定檔。Desktop 不會套用該帳戶無法讀取之檔案中的鍵,Claude Code 也會[在沒有這些鍵的情況下啟動](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)。1558* **檔案權限**:確保電腦上每位開發人員的帳戶都能讀取受管設定檔。Desktop 不會套用帳戶無法讀取之檔案中的鍵,而 Claude Code 也會[在沒有這些鍵的情況下啟動](/docs/zh-TW/managed-settings#find-entries-claude-code-dropped)。
1321 1559
1322請將這三個鍵放在同一個[受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)中,也就是您所提供的最高優先順序來源。如果您提供[伺服器管理設定](/docs/zh-TW/server-managed-settings),也請在每台電腦上最高優先順序的 MDM 政策或受管設定檔中保留這三個鍵的副本。Desktop 會在啟動時擷取伺服器管理設定,在擷取成功之前,套用的是電腦上的副本。1560將這三個鍵放在同一個[受管來源](/docs/zh-TW/managed-settings#how-claude-code-combines-managed-sources)中,也就是您提供的最高排名來源。如果您提供[伺服器管理的設定](/docs/zh-TW/server-managed-settings),也請在每台電腦上的最高排名 MDM 政策或受管設定檔中保留這三個鍵的副本。Desktop 會在啟動時擷取伺服器管理的設定,而在擷取成功之前,會套用電腦上的副本。
1323 1561
1324若要確認設定已套用,請檢查開發人員的電腦:1562若要確認設定已套用,請檢查開發人員的電腦:
1325 1563
1326<Steps>1564<Steps>
1327 <Step title="檢查環境下拉式選單">1565 <Step title="檢查環境下拉選單">
1328 結束並重新開啟 Desktop,然後在提示詞輸入框中開啟環境下拉式選單。**Local** 會呈灰色,且 **Shared Dev VM** 會出現在 **SSH** 下方。如果 **Local** 仍可使用,請檢查 Desktop 版本、檔案是否為有效的 JSON,以及電腦讀取的是哪個受管來源。1566 結束並重新開啟 Desktop,然後開啟提示詞方塊中的環境下拉選單。**Local** 會呈現灰色,且 **Shared Dev VM** 會出現在 **SSH** 下方。如果 **Local** 仍可使用,請檢查 Desktop 版本、檔案是否為有效的 JSON,以及電腦讀取的是哪個受管來源。
1329 </Step>1567 </Step>
1330 1568
1331 <Step title="新增不在允許清單中的主機">1569 <Step title="新增不在允許清單上的主機">
1332 使用不在允許清單中的主機名稱(例如 `other.example.com`)[新增 SSH 連線](#ssh-sessions)。Desktop 會儲存該連線但拒絕連接,並說明您組織的設定不允許此連線。1570 使用不在允許清單上的主機名稱(例如 `other.example.com`)[新增 SSH 連線](#ssh-sessions)。Desktop 會儲存該連線但拒絕連線,並說明您組織的設定不允許該連線。
1333 </Step>1571 </Step>
1334</Steps>1572</Steps>
1335 1573
1682 1920
1683對於任何其他訊息,請檢查[遠端機器要求](#remote-machine-requirements-for-ssh-sessions)。1921對於任何其他訊息,請檢查[遠端機器要求](#remote-machine-requirements-for-ssh-sessions)。
1684 1922
1923<a id="get-desktops-logs-for-an-ssh-problem" />
1924
1925<h3 id="get-desktop’s-logs-for-an-ssh-problem">
1926 取得 SSH 問題的 Desktop 日誌
1927</h3>
1928
1929`ssh.log` 是 Desktop 對其 SSH 連線的記錄,包含在您從 **Help** 選單儲存的 Desktop 日誌 zip 檔案中。若要儲存,請開啟 **Help > Troubleshooting**,並選擇適用於您系統的項目:
1930
1931* **macOS**:**Show Logs in Finder**
1932* **Windows**:**Show Logs in File Explorer**
1933* **Linux**:**Show Logs in File Manager**
1934
1935傳送前請先檢查這些檔案,因為其中可能包含您環境中的名稱和其他詳細資訊。`<host>` 和 `<user>` 代表 Desktop 已取代的名稱。Desktop 不會取代所有名稱,SSH 主機或使用者名稱仍可能以原樣出現。如果您將 zip 檔案傳送給他人,請告知是哪個主機在何時失敗,因為日誌中可能未指出該主機。
1936
1937zip 檔案不包含 Desktop 安裝在遠端機器上的輔助程式的日誌。若也要取得該日誌,請從連線使用者家目錄中 [`~/.claude/remote/run/`](#files-and-processes-on-the-remote-machine) 下的輔助程式資料夾複製 `remote-server.log`。傳送前也請檢查該檔案。
1938
1685<h3 id="app-won’t-quit">1939<h3 id="app-won’t-quit">
1686 應用程式無法退出1940 應用程式無法退出
1687</h3>1941</h3>