在控制台綁定密鑰時需要重啟執行個體,但這可能影響商務持續性。如果您希望在不重啟執行個體的情況下綁定密鑰,可以參考本文進行手動操作。本文將詳細介紹如何為執行個體手動綁定金鑰組,實現免密登入。
方案概述
手動綁定金鑰組並實現免密登入需要進行以下操作:
產生金鑰組:其中密鑰作為後續登入的憑證,由您自行儲存,公開金鑰將儲存在執行個體內。
為執行個體綁定公開金鑰:通過可靠的串連方式,將您的公開金鑰添加到執行個體中。本步驟主要關注
~/.ssh/authorized_keys
設定檔。開啟SSH服務端的公開金鑰認證功能:在綁定公開金鑰後,您還需要在執行個體的SSH服務端開啟公開金鑰認證功能。本步驟主要關注
/etc/ssh/sshd_config
設定檔。通過金鑰組認證串連執行個體:在完成前幾步操作後,可以通過SSH認證的方式串連執行個體,驗證密鑰認證功能已經配置成功。
1. 產生金鑰組
您可以通過多種方式產生金鑰組,不同的工具產生金鑰組的步驟有所差別,本步驟以通過執行ssh-keygen
命令產生金鑰組為例。在命令列輸入以下命令產生金鑰組。
ssh-keygen -t rsa -b 2048 -f id_rsa
-t rsa
:代表密鑰類型為rsa
金鑰組。-b 2048
:代表密鑰長度為2048位。-f id_rsa
:代表產生金鑰組的檔案名稱以及儲存位置。
執行這條命令後,系統會提示您輸入一個密碼短語(passphrase),用於保護私密金鑰。設定密碼後,即使私密金鑰被盜,攻擊者也要求輸入密碼才可以使用私密金鑰。
如果您不希望為私密金鑰設定密碼,可以直接按斷行符號鍵跳過。
命令執行完成後,會在當前命令列所在目錄下產生一對密鑰檔案:id_rsa.pub
(公開金鑰)、id_rsa
(私密金鑰),請妥善儲存私密金鑰,不要泄漏給他人。
2. 為執行個體綁定公開金鑰
為執行個體綁定公開金鑰後,可以在串連執行個體時通過與其相對應的私密金鑰作為登入憑證。
選擇合適的方式串連到ECS執行個體,具體操作,請參見2.1 通過SSH的方式串連執行個體(Linux)或2.3 通過會話管理串連執行個體(Linux/Windows)。
在
~/.ssh/authorized_keys
中配置公開金鑰檔案。在操作之前,您需要明確登入Linux系統的使用者身份,例如使用
ecs-user
的身份登入執行個體,就需要為ecs-user
配置公開金鑰。設定root使用者的公開金鑰
建立
authorized_keys
設定檔。root使用者的公開金鑰設定檔在
/root/.ssh/authorized_keys
路徑下。如果沒有該檔案,請輸入以下命令建立.ssh
檔案夾和authorized_keys
設定檔。sudo mkdir /root/.ssh sudo touch /root/.ssh/authorized_keys
將步驟1中產生的公開金鑰資訊複製到
/root/.ssh/authorized_keys
設定檔中。您可以使用vim編輯器編輯該檔案,具體操作,請參見Vim編輯器。
修改該設定檔的許可權。
該檔案配置過高的許可權會導致SSH串連失敗,請設定以下許可權。
sudo chmod 700 /root/.ssh sudo chmod 600 /root/.ssh/authorized_keys
設定非root使用者的公開金鑰
如果您要為其他系統使用者綁定金鑰組,請參考以下步驟。
建立
authorized_keys
設定檔。找到
/home/<username>/.ssh/authorized_keys
設定檔,其中<username>
為您待綁定金鑰組的使用者。例如您需要給ecs-user綁定金鑰組,您需要關注
/home/ecs-user/.ssh/authorized_keys
設定檔。如果沒有該設定檔,請輸入以下命令在對應使用者的家目錄下建立設定檔。
命令中
<user_name>
為您待綁定公開金鑰使用者的使用者名稱。sudo mkdir /home/<username>/.ssh sudo touch /home/<username>/.ssh/authorized_keys
將步驟1中產生的公開金鑰複製到
/home/<user_name>/.ssh/authorized_keys
設定檔中。該檔案可以支援多行,如果要綁定多個金鑰組,可以在新的一行添加新的公開金鑰資訊。您可以使用vim編輯器編輯該檔案,具體操作,請參見Vim編輯器。
修改該設定檔的許可權。
該檔案配置過高的許可權會導致SSH串連失敗,請設定以下許可權。
命令中
<username>
為您待綁定公開金鑰使用者的使用者名稱。sudo chmod 700 /home/<username>/.ssh sudo chmod 600 /home/<username>/.ssh/authorized_keys
3. 開啟SSH服務的公開金鑰認證功能
在執行個體內配置公開金鑰之後,需要開啟SSH服務的公開金鑰認證功能,否則無法使用金鑰組串連執行個體。
修改SSH的設定檔
/etc/ssh/sshd_config
中的PubkeyAuthentication
參數為yes
,代表開啟公開金鑰認證功能。重要您可以使用vim編輯器編輯該檔案,具體操作,請參見Vim編輯器。建議修改前備份該設定檔,防止誤操作導致的SSH服務啟動失敗。
輸入命令,重啟SSH服務,使配置生效。
以Alibaba Cloud Linux 3為例,輸入以下命令重啟SSH服務。
部分作業系統(Ubuntu/Debian)的SSH服務名為
ssh
而非sshd
,請根據實際情況調整。sudo systemctl restart sshd
重要如果您是通過SSH的方式串連到執行個體,重啟服務時您的串連可能會發生中斷,等待SSH服務重啟完成後,您可以重新串連到該執行個體。
4. 通過金鑰組認證實現免密登入
在配置完成金鑰組之後,您可以使用金鑰組認證的方式串連到Linux執行個體,不同的工具使用步驟不同,本文以通過命令列和阿里雲控制台的Workbench為例,為您介紹如何通過金鑰組認證的方式登入Linux執行個體。
命令列
在完成前面的配置操作之後,您可以在命令列輸入以下命令串連Linux執行個體。
ssh -i <identity_file_path> -p <ssh_port> <username>@<server_ip>
該命令中各個參數說明如下:
<identity_file_path>
:私密金鑰檔案位置。<ssh_port>
:SSH服務的連接埠,預設為22。<username>
: 通過指定使用者的身份登入執行個體。<server_ip>
:執行個體的IP地址(如果是本地遠端連線ECS執行個體,需要填寫執行個體的公網IP地址,若是在內網互連的其他雲端服務器上,可使用私網IP地址)。
Workbench
在使用Workbench通過公網IP或私網IP(SSH方式)串連到Linux執行個體時,可以選擇通過金鑰組認證的方式登入執行個體。具體操作,請參見通過SSH的方式登入Linux執行個體(支援私網)。
更多操作
為同一使用者綁定多個金鑰組(公開金鑰)
使用者家目錄下的.ssh/authorized_keys
檔案支援多行配置,每行添加一個公開金鑰,即可讓多個金鑰組使用同一使用者身份登入。
手動解除綁定金鑰組(公開金鑰)
您可以通過編輯使用者家目錄下的.ssh/authorized_keys
檔案,直接刪除特定的公開金鑰條目。刪除後,對應的私密金鑰將無法用於該使用者的執行個體串連。
通過~/.ssh/config
設定檔簡化ssh串連命令
如果您經常串連到多個不同的執行個體,您可以使用本機~/.ssh/config
設定檔簡化命令,無需每次登入都輸入完整的命令。具體配置方式如下。
實現效果
簡化前:
ssh -i <identity_file_path> -p <ssh_port> <username>@<server_ip>
簡化後:
ssh <server_name>
配置流程
在您的本機編輯或建立
~/.ssh/config
設定檔。在該設定檔下添加以下內容:
Host <server_name> HostName: <server_ip> User <username> IdentityFile <identity_file_path> Port <ssh_port>
該設定檔中各個參數說明如下:
<server_name>
:自訂伺服器別名。<server_ip>
:執行個體的IP地址。<username>
: 通過指定使用者的身份登入執行個體。<identity_file_path>
:私密金鑰檔案位置。<ssh_port>
:SSH服務的連接埠,預設為22。
配置後使用簡化命令。
<server_name>
為您在~/.ssh/config
設定檔中設定的伺服器別名。ssh <server_name>