

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為服務受管使用者產生 SSH 金鑰
<a name="sshkeygen"></a>

您可以設定伺服器，以使用服務受管身分驗證方法對使用者進行身分驗證，其中使用者名稱和 SSH 金鑰存放在服務中。使用者的公有 SSH 金鑰會以使用者屬性的形式上傳至伺服器。伺服器會使用此金鑰做為標準金鑰型身分驗證程序的一部分。每個使用者都可以針對個別伺服器上的檔案擁有多個公有 SSH 金鑰。如需每個使用者可存放的金鑰數量限制，請參閱 中的[AWS Transfer Family 端點和配額](https://docs.aws.amazon.com//general/latest/gr/transfer-service.html)*Amazon Web Services 一般參考*。

做為服務受管身分驗證方法的替代方案，您可以使用自訂身分提供者對使用者進行身分驗證，或者 AWS Directory Service for Microsoft Active Directory。如需詳細資訊，請參閱 [使用自訂身分提供者](custom-idp-intro.md) 或 [使用 AWS Directory Service for Microsoft Active Directory](directory-services-users.md) 。

伺服器只能使用一種方法 （服務受管、目錄服務或自訂身分提供者） 來驗證使用者，且該方法無法在建立伺服器之後變更。

**Topics**
+ [在 macOS、Linux 或 Unix 上建立 SSH 金鑰](macOS-linux-unix-ssh.md)
+ [在 Microsoft Windows 上建立 SSH 金鑰](windows-ssh.md)
+ [將 SSH2 金鑰轉換為 SSH 公有金鑰格式](convert-ssh2-public-key.md)

# 在 macOS、Linux 或 Unix 上建立 SSH 金鑰
<a name="macOS-linux-unix-ssh"></a>

在 macOS、Linux 或 Unix 作業系統上，您可以使用 `ssh-keygen`命令來建立 SSH 公有金鑰和 SSH 私有金鑰，也稱為金鑰對。

**注意**  
在下列範例中，我們不會指定密碼短語：在此情況下，工具會要求您輸入密碼短語，然後重複它進行驗證。建立密碼短語可為您的私有金鑰提供更好的保護，也可能改善整體系統安全性。您無法復原密碼短語：如果您忘記密碼短語，則必須建立新的金鑰。  
不過，如果您要產生伺服器主機金鑰，*則必須*在命令中指定 `-N ""`選項 （或在出現提示時按**Enter**兩次） 來指定空密碼短語，因為 Transfer Family 伺服器無法在啟動時請求密碼。

**在 macOS、Linux 或 Unix 作業系統上建立 SSH 金鑰**

1. 在 macOS、Linux 或 Unix 作業系統上，開啟命令終端機。

1. AWS Transfer Family 接受 RSA-、ECDSA- 和 ED25519-formatted的金鑰。根據您要產生的金鑰對類型選擇適當的命令。

   **秘訣**：`key_name`將 取代為 SSH 金鑰對檔案的實際名稱。
   + 若要產生 RSA 4096 位元金鑰對：

     ```
     ssh-keygen -t rsa -b 4096 -f key_name
     ```
   + 若要產生 ECDSA 521 位元金鑰對 (ECDSA 的位元大小為 256、384 和 521)：

     ```
     ssh-keygen -t ecdsa -b 521 -f key_name
     ```
   + 若要產生 ED25519 金鑰對：

     ```
     ssh-keygen -t ed25519 -f key_name
     ```

   以下顯示`ssh-keygen`輸出的範例。

   ```
   ssh-keygen -t rsa -b 4096 -f key_name
   Generating public/private rsa key pair.
   
   Enter passphrase (empty for no passphrase): 
   Enter same passphrase again:
   Your identification has been saved in key_name.
   Your public key has been saved in key_name.pub.
   The key fingerprint is:
   SHA256:8tDDwPmanTFcEzjTwPGETVWOGW1nVz+gtCCE8hL7PrQ bob.amazon.com
   The key's randomart image is:
   +---[RSA 4096]----+
   |    . ....E      |
   | .   = ...       |
   |. . . = ..o      |
   | . o +  oo =     |
   |  + =  .S.= *    |
   | . o o ..B + o   |
   |     .o.+.* .    |
   |     =o*+*.      |
   |    ..*o*+.      |
   +----[SHA256]-----+
   ```

   **秘訣**：執行上述`ssh-keygen`命令時，它會將公有和私有金鑰建立為目前目錄中的檔案。

   您的 SSH 金鑰對現在已準備好可供使用。請遵循步驟 3 和 4，為您的服務受管使用者存放 SSH 公有金鑰。這些使用者會在 Transfer Family 伺服器端點上傳輸檔案時使用金鑰。

1. 導覽至 `key_name.pub` 檔案並開啟。

1. 複製文字並將其貼到服務受管使用者的 **SSH 公有金鑰**中。

   1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台，然後從導覽窗格中選取**伺服器**。

   1. 在**伺服器**頁面上，選取包含您要更新之使用者之伺服器的伺服器 **ID**。

   1. 選取您要為其新增公有金鑰的使用者。

   1. 在 **SSH 公有金鑰**窗格中，選擇**新增 SSH 公有金鑰**。  
![\[AWS Transfer Family 主控台，顯示所選使用者的使用者詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/edit-user-add-key-01.png)

   1. 將產生的公有金鑰文字貼到 SSH 公有金鑰文字方塊，然後選擇**新增金鑰**。  
![\[AWS Transfer Family 主控台，顯示用於新增公有金鑰的新增金鑰頁面。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/edit-user-add-key-02.png)

      新金鑰會列在 SSH 公有金鑰窗格中。  
![\[AWS Transfer Family 主控台，在 SSH 公有金鑰區段中顯示新增的公有金鑰。\]](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/edit-user-add-key-03.png)

# 在 Microsoft Windows 上建立 SSH 金鑰
<a name="windows-ssh"></a>

Windows 包含 OpenSSH 作為內建功能，您可以使用它在 Linux 或 macOS 上產生相同格式的 SSH 金鑰。或者，您可以使用第三方工具，例如 PuTTY 的金鑰產生器 (PuTTYgen)。

## 使用 Windows 內建 OpenSSH
<a name="windows-openssh"></a>

根據預設，Windows 的最近版本包括 OpenSSH。您可以使用與 macOS/Linux 章節所述的相同`ssh-keygen`命令：

1. 開啟 Windows PowerShell 或命令提示字元。

1. 根據您要產生的金鑰類型執行下列其中一個命令：
   + 若要產生 RSA 4096 位元金鑰對：

     ```
     ssh-keygen -t rsa -b 4096 -f key_name
     ```
   + 若要產生 ECDSA 521 位元金鑰對：

     ```
     ssh-keygen -t ecdsa -b 521 -f key_name
     ```
   + 若要產生 ED25519 金鑰對：

     ```
     ssh-keygen -t ed25519 -f key_name
     ```

1. 請依照與 macOS/Linux 區段相同的步驟，將公有金鑰上傳至其中 AWS Transfer Family。

## 使用 PuTTYgen （第三方工具）
<a name="windows-puttygen"></a>

某些適用於 Windows 的第三方 SSH 用戶端，例如 PuTTY，使用不同的金鑰格式。PuTTY 使用私有金鑰的`PPK`格式。如果您使用的是 PuTTY 或 WinSCP 等相關工具，您可以使用 PuTTYgen 以此格式建立金鑰。

**注意**  
如果您使用非 `.ppk` 格式的私有金鑰檔案呈現 WinSCP，該用戶端會為您提供將金鑰轉換為 `.ppk` 格式的 。

如需使用 PuTTYgen 建立 SSH 金鑰的教學課程，請參閱 [SSH.com：// 網站](https://www.ssh.com/ssh/putty/windows/puttygen)。

# 將 SSH2 金鑰轉換為 SSH 公有金鑰格式
<a name="convert-ssh2-public-key"></a>

 AWS Transfer Family 僅接受 SSH 格式的公有金鑰。如果您有 SSH2 公有金鑰，則需要進行轉換。SSH2 公有金鑰的格式如下：

```
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20160402"
AAAAB3NzaC1yc2EAAAABJQAAAgEAiL0jjDdFqK/kYThqKt7THrjABTPWvXmB3URI
:
:
---- END SSH2 PUBLIC KEY ----
```

SSH 公有金鑰的格式如下：

```
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...
```

執行下列命令，將 SSH2-formatted的公有金鑰轉換為 SSH 格式的公有金鑰。將 *ssh2-key* 取代為您的 SSH2 金鑰名稱，將 *ssh-key* 取代為您的 SSH 金鑰名稱。

```
ssh-keygen -i -f ssh2-key.pub > ssh-key.pub
```