全部產品
Search
文件中心

Elastic Compute Service:通過ali-instance-cli註冊公開金鑰免密登入執行個體

更新時間:Jun 19, 2024

本文介紹如何使用ali-instance-cli的子命令send_public_key註冊公開金鑰並免密登入執行個體。

前提條件

背景資訊

使用ali-instance-cli子命令send_public_key,可以將SSH公開金鑰發送到目標執行個體內部供指定使用者使用,密鑰保留60s。在60s內,您可以通過SSH公開金鑰登入的方式進入執行個體,無需輸入密碼。

會話管理用戶端支援Linux、macOS和Windows作業系統,不同作業系統使用方式不同,具體說明如下:

Linux或macOS作業系統

說明

本文操作以test使用者為例,具體操作以您實際操作的使用者和使用者目錄為準。

  1. 登入工作階段管理用戶端。

  2. 在會話管理用戶端安裝ali-instance-cli。

    不同作業系統的用戶端安裝方式不同,具體說明如下:

    • Linux

      curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli
      chmod a+x ali-instance-cli
    • macOS:

      curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli
      chmod a+x ali-instance-cli
  3. 可選:建立config檔案並添加相關配置。

    使用instance_id登入到目錄執行個體時,需執行該步驟。

    1. 在目前使用者目錄下建立.ssh目錄,本文以/home/test為例。

      mkdir .ssh
    2. 切換到.ssh目錄下。

      cd .ssh
    3. 建立並開啟config檔案。

      vim config
    4. i進入編輯模式。

    5. config檔案中添加如下內容。

      說明

      ali-instance-cli需要替換成檔案的絕對路徑,例如/home/test/ali-instance-cli

      host i-*
          ProxyCommand sh -c "ali-instance-cli ssh -i '%h' --port  '%p'" 
    6. Esc鍵,退出編輯模式。

    7. 輸入:wq,並按Enter鍵,儲存並退出。

    8. config檔案添加執行許可權。

      chmod 755 config
  4. 配置AccessKey、STS Token。

    關於如何擷取AccessKey或STS Token,請參見建立AccessKey什麼是STS

    1. 切換到test目錄。

      cd /home/test
    2. 配置鑒權認證方式。

      支援以下兩種配置方式:

      • AccessKey配置方式

        執行如下命令,根據介面提示,輸入AccessKey ID、AccessKey Secret、RegionID。

        ./ali-instance-cli configure --mode AK
      • STS Token配置方式

        說明

        regionaksktoken要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token。

        ./ali-instance-cli configure set --mode StsToken --region "region" --access-key-id "ak"  --access-key-secret "sk"   --sts-token "token"

      當回顯如下圖所示時,說明鑒權方式已配置完成。AK.png

  5. 在會話管理用戶端,執行如下命令,產生RSA類型的公開金鑰與密鑰檔案。

    ssh-keygen -t rsa

    根據介面提示,按Enter,當介面顯示如下所示時,說明公開金鑰與密鑰檔案已產生。產生公開金鑰

    說明

    產生的公開金鑰路徑預設為~/.ssh/id_rsa.pub。

  6. 在會話管理用戶端中,發送SSH公開金鑰到目標執行個體中。

    ./ali-instance-cli send_public_key --instance <instance-id> --public-key "<本地公開金鑰檔案的內容或者檔案路徑>" --user-name testuser
    說明

    --user-name參數指定公開金鑰的使用者名稱,以上命令中testuser僅為樣本。如果不指定預設為root。指定的使用者名稱需要確保在目標執行個體上已經存在。

  7. 運行SSH命令免密登入目標執行個體。

    支援以下兩種方式登入目標執行個體:

    • 通過公網IP地址免密登入到目標執行個體。

      ssh -i ~/.ssh/id_rsa testuser@instance_ip
      說明

      使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_ip修改成您遠程登入目標執行個體的IP地址;testuser修改成您遠程登入的使用者名稱。

    • 使用instance_id免密登入到目標執行個體。

      ssh -i ~/.ssh/id_rsa testuser@instance_id
      說明

      使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_id修改成您遠程登入目標執行個體ID;testuser修改成您遠程登入的使用者名稱。

    當回顯如下圖所示時,說明已經通過Session Manager轉寄SSH方式串連到目標執行個體。串連執行個體

Windows作業系統

使用會話管理用戶端的Windows作業系統已安裝OpenSSH,具體操作,請參見使用雲助手在Windows執行個體中安裝OpenSSH程式

說明

本文操作以test使用者為例,具體操作以您實際操作的使用者和使用者目錄為準。

  1. 登入工作階段管理用戶端。

  2. 在會話管理用戶端下載安裝ali-instance-cli。

    不同作業系統的用戶端安裝方式不同,具體說明如下:

    • 使用OpenSSH用戶端下載。

      Invoke-WebRequest -Uri "https://aliyun-client-assist.oss-cn-beijing.aliyuncs.com/session-manager/windows/ali-instance-cli.exe" -OutFile <destination>
      說明

      <destination>請修改成實際的本地路徑。

    • 使用瀏覽器下載。

      下載Windows版ali-instance-cli並儲存到本地檔案夾中,如C:\Users\test

  3. 可選:建立config檔案並添加相關配置。

    使用instance_id登入到目錄執行個體時,執行該步驟。

    1. C:\Users\username下建立.ssh檔案夾。

      說明

      C:\Users\username需替換成實際的檔案夾,如C:\Users\test

      1. 在案頭左下角單擊win2016 搜尋.png表徵圖,然後在搜尋方塊輸入Windows PowerShell

      2. 單擊Windows PowerShell

      3. C:\Users\username下,執行mkdir .ssh命令,建立.ssh檔案夾。

    2. .ssh檔案夾下建立config檔案。

      重要

      config檔案名稱中不能含有副檔名。

    3. config檔案中添加如下內容。

      ali-instance-cli.exe需要替換成檔案的絕對路徑,例如C:\Users\test\ali-instance-cli.exe

      host i-*
          ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "ali-instance-cli.exe ssh -i '%h' --port  '%p'"
  4. 配置AccessKey或STS Token。

    關於如何擷取AccessKey或STS Token,請參見建立AccessKey什麼是STS

    1. 選擇開始 > 運行,輸入cmd,按Enter鍵,開啟命令提示字元視窗。

    2. 切換到test目錄。

      cd C:\Users\test
    3. 配置鑒權認證方式。

      支援以下兩種配置方式:

      • AccessKey配置方式

        執行如下命令,根據介面提示,輸入AccessKey ID、AccessKey Secret、RegionID。

        .\ali-instance-cli.exe configure --mode AK
      • STS Token配置方式

        說明

        regionaksktoken要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token。

        .\ali-instance-cli.exe configure set --mode StsToken --region "region" --access-key-id "ak"  --access-key-secret "sk"   --sts-token "token"

      當回顯如下圖所示時,說明鑒權方式已配置完成。

      windows AK(新).png

  5. 在會話管理用戶端,執行如下命令,產生RSA類型的公開金鑰與密鑰檔案。

    ssh-keygen -t rsa

    根據介面提示,按Enter,當介面顯示如下所示時,說明公開金鑰與密鑰檔案已產生。產生密鑰

    說明

    產生的公開金鑰路徑預設為C:\Users\Administrator/.ssh/id_rsa.pub。

  6. 在會話管理用戶端中,發送SSH公開金鑰到目標執行個體中。

    .\ali-instance-cli.exe send_public_key --instance <instance-id> --public-key "<本地公開金鑰檔案的內容或者檔案路徑>" --user-name testuser
    說明

    --user-name參數指定公開金鑰的使用者名稱,以上命令中testuser僅為樣本。如果不指定預設為root。指定的使用者名稱需要確保在目標執行個體上已經存在。

  7. 運行SSH命令免密登入目標執行個體。

    • 通過公網IP免密登入到目標執行個體。

      ssh -i ~/.ssh/id_rsa testuser@instance_ip
      說明

      使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_ip修改成您遠程登入目標執行個體的IP;testuser修改成您遠程登入的使用者名稱。

    • 使用instance_id免密登入到目標執行個體。

      ssh -i ~/.ssh/id_rsa testuser@instance_id
      說明

      使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_id修改成您遠程登入目標執行個體ID;testuser修改成您遠程登入的使用者名稱。

    當回顯如下圖所示時,說明已經通過Session Manager轉寄SSH方式串連到目標執行個體。串連執行個體

常見問題

為什麼免密登入時提示輸入密碼?

公開金鑰註冊完成之後,有效期間為60s,請確認您的公開金鑰是否已經到期。