---
title: "在 Mac 上為 SFTP 設定 SSH 金鑰與跳板主機"
description: "在 Mac 上一次設定好 SSH 金鑰、代理程式、~/.ssh/config 和 ProxyJump 跳板主機，終端機和 AnyBucket 的 SFTP 都能使用。"
url: https://anybucket.app/zh-hant/guides/ssh-keys-and-jump-hosts
lang: zh-Hant
---

# SSH 金鑰與跳板主機，一次設定好

用金鑰取代密碼登入，以及連線到位於堡壘主機後方的伺服器，都屬於你 Mac 本身的 SSH 設定。先讓它們在終端機中運作，AnyBucket 的 SFTP 就會跟著運作。

## 簡單來說

AnyBucket 執行 macOS 內建的 `ssh`（`/usr/bin/ssh`），因此它會和終端機完全一樣，使用你的金鑰、你的 SSH 代理程式、你的 `~/.ssh/config`（`Host`、`IdentityFile`、`ProxyJump`）以及安全金鑰。先設定到 `ssh user@host` 能在終端機中使用，再在 AnyBucket 中連線到同一台主機。主機金鑰會與你自己的 `~/.ssh/known_hosts` 比對。

## AnyBucket 如何使用你的 SSH 設定
不需要另外填寫任何金鑰儲存區。使用 SFTP 時，AnyBucket 會啟動 `/usr/bin/ssh`，也就是終端機使用的同一個程式，因此：

- 你在 `~/.ssh` 中的私密金鑰可以使用，
- 載入 SSH 代理程式的金鑰可以使用，
- `~/.ssh/config` 中的每個 `Host` 區塊都會套用，包括 `HostName`、`User`、`IdentityFile` 和 `ProxyJump`，
- 主機金鑰會與終端機共用的 `~/.ssh/known_hosts` 比對。

經驗法則：**只要 `ssh user@host` 在終端機中可以使用，在 AnyBucket 中也可以。** 伺服器要求密碼時，密碼會存入你的登入鑰匙圈。

## 建立金鑰並加到伺服器上
如果你還沒有金鑰：

1. 打開終端機，執行 `ssh-keygen -t ed25519`。按下 Return 保留預設檔案 `~/.ssh/id_ed25519`，然後設定一組密語。
2. 將公開的那一半 `~/.ssh/id_ed25519.pub` 加到伺服器上的 `~/.ssh/authorized_keys`，或傳送給伺服器管理員。絕對不要分享沒有 `.pub` 的那個檔案。
3. 測試：`ssh user@host` 應該能在不要求伺服器密碼的情況下登入。

若不想每次都輸入密語，請用 `ssh-add` 將金鑰加入代理程式。macOS 可以將密語保存在你的鑰匙圈中。

## 在 ~/.ssh/config 中為伺服器命名
`Host` 區塊會為伺服器取一個簡短的名稱，並提供連線所需的設定：

```
Host staging
  HostName staging.example.com
  User deploy
  IdentityFile ~/.ssh/id_ed25519
```

現在 `ssh staging` 就會用那組金鑰以 `deploy` 身分登入。在 AnyBucket 中透過 SFTP 連線到伺服器 **staging**，同一個區塊就會套用，因為 AnyBucket 會像終端機一樣，將這個名稱傳給 `ssh`。

## 透過跳板主機連線到伺服器
許多伺服器只能透過堡壘主機（也就是跳板主機）連線。在終端機中，臨時使用時你會寫 `ssh -J bastion app`。若要永久設定，請使用 `ProxyJump`：

```
Host bastion
  HostName bastion.example.com
  User me

Host app
  HostName 10.0.1.20
  User deploy
  ProxyJump bastion
```

在終端機中用 `ssh app` 測試。能登入之後，在 AnyBucket 中透過 SFTP 連線到 **app**：連線會自動經過堡壘主機，App 中不需要額外設定任何東西。多次跳轉也以相同方式串接，在 `ProxyJump` 後面加上以逗號分隔的列表即可。

## 主機金鑰：「尚未認識」或「已變更」
第一次連線到伺服器時，它的金鑰還不在 `~/.ssh/known_hosts` 中，AnyBucket 會像終端機一樣，在信任之前先詢問你。請將指紋與伺服器管理員公佈的指紋比對。

如果 AnyBucket 顯示金鑰**已變更**，請停下來查明原因。伺服器重建或重新安裝後，出現新的金鑰是預期中的情況。否則請不要連線：金鑰變更可能代表你連上的並不是你以為的那台伺服器。詳情請參閱[疑難排解](https://anybucket.app/zh-hant/support/troubleshooting#host-keys)。

## 無法使用時
1. **先在終端機中嘗試**，使用與 AnyBucket 中完全相同的主機名稱：`ssh staging`。如果失敗，問題出在 SSH 設定，而不是 App。
2. **加上 `-v`**（`ssh -v staging`），查看 `ssh` 嘗試了哪些金鑰和設定行。
3. **檢查代理程式**：`ssh-add -l` 會列出代理程式持有的金鑰。
4. **檢查權限**：`ssh` 會拒絕其他使用者可以讀取的私密金鑰。`chmod 600 ~/.ssh/id_ed25519` 可以修正這個問題。

還是沒解決？請參閱 [SFTP 金鑰或跳板主機無法使用](https://anybucket.app/zh-hant/support/troubleshooting#ssh-keys)，或寄電子郵件給支援團隊，附上 `ssh -v` 顯示的內容，並移除任何私密資訊。

## 常見問題，一一解答

### AnyBucket 會讀取我的 ~/.ssh/config 嗎？

會。它執行 `/usr/bin/ssh`，而 `ssh` 會像在終端機中一樣讀取 `~/.ssh/config`：`Host`、`HostName`、`User`、`IdentityFile`、`ProxyJump` 等。

### 跳板主機要在哪裡設定？

在 `~/.ssh/config` 中：將 `ProxyJump` 寫進去，在終端機中用 `ssh` 測試，然後在 AnyBucket 中連線到最終主機的名稱。跳轉會自動進行。

### 它支援 SSH 代理程式或安全金鑰嗎？

支援。在終端機中能搭配 `ssh` 使用的代理程式或安全金鑰，在 AnyBucket 中也能使用，因為用的是同一個 `ssh`。

### AnyBucket 將 SFTP 密碼存放在哪裡？

在你的登入鑰匙圈中，每個書籤一個項目。金鑰則留在原處，也就是 `~/.ssh` 中，AnyBucket 絕不會拷貝它們。

### 為什麼伺服器的金鑰顯示「已變更」？

因為它的金鑰與 `~/.ssh/known_hosts` 中的金鑰不再相符。伺服器重建後這是預期中的情況；否則，在查明原因之前請不要連線。

## 延伸閱讀

- [SFTP](https://anybucket.app/zh-hant/features/sftp)
- [在 Mac 上使用 SFTP](https://anybucket.app/zh-hant/guides/sftp-client-mac)
- [疑難排解](https://anybucket.app/zh-hant/support/troubleshooting)
- [相容性](https://anybucket.app/zh-hant/support/compatibility)

**以 $9.99 購買:** https://buy.polar.sh/polar_cl_pCF9yOjezTUaUqMPyUsxEho1EjcOvo6Bk49Q929LQCQ

---

AnyBucket 是由 [Clever Mechanisms](https://clevermechanisms.dev) 開發的獨立軟體，與 Apple Inc. 或任何儲存服務供應商並無關聯，亦未獲其背書或贊助。 Independent software in the spirit of Cyberduck and the classic two-pane commanders. Not affiliated with iterate GmbH (Cyberduck). Apple、Mac、macOS、Finder 和 Quick Look 是 Apple Inc. 在美國及其他國家和地區註冊的商標。Amazon S3 是 Amazon.com, Inc. 的商標。其他產品名稱為其各自所有者的商標。 電子郵件支援: support@clevermechanisms.dev
