在控制台綁定密鑰時需要重啟執行個體,但這可能影響商務持續性。如果您希望在不重啟執行個體的情況下綁定密鑰,可以參考本文進行手動操作。本文將詳細介紹如何為執行個體手動綁定金鑰組,實現免密登入。
方案概述
手動綁定金鑰組並實現免密登入需要進行以下操作:
產生金鑰組:其中密鑰作為後續登入的憑證,由您自行儲存,公開金鑰將儲存在執行個體內。
為執行個體綁定公開金鑰:通過可靠的串連方式,將您的公開金鑰添加到執行個體中。本步驟主要關注~/.ssh/authorized_keys
設定檔。
開啟SSH服務端的公開金鑰認證功能:在綁定公開金鑰後,您還需要在執行個體的SSH服務端開啟公開金鑰認證功能。本步驟主要關注/etc/ssh/sshd_config
設定檔。
通過金鑰組認證串連執行個體:在完成前幾步操作後,可以使用SSH金鑰組認證的方式串連執行個體,驗證已經正確完成配置操作。
1. 產生金鑰組
您可以通過多種方式產生金鑰組,不同的工具產生金鑰組的步驟有所差別,本步驟以通過執行ssh-keygen
命令產生金鑰組為例。在命令列輸入以下命令產生金鑰組。
說明
您也可以在控制台建立金鑰組,建立後會自動下載私密金鑰,此時還需要使用工具擷取其公開金鑰資訊,具體操作,請參見建立金鑰組、查看公開金鑰資訊。
ssh-keygen -t rsa -b 2048 -f id_rsa
重要
執行這條命令後,系統會提示您輸入一個私密金鑰口令(passphrase),用於保護私密金鑰。設定私密金鑰口令後,即使私密金鑰被盜,攻擊者也需要私密金鑰口令才可以使用私密金鑰。
如果您不希望為私密金鑰設定私密金鑰口令,可以直接按斷行符號鍵跳過。
命令執行完成後,會在當前命令列所在目錄下產生一對密鑰檔案:id_rsa.pub
(公開金鑰)、id_rsa
(私密金鑰),請妥善儲存私密金鑰,不要泄漏給他人。
2. 為執行個體綁定公開金鑰
為執行個體綁定公開金鑰後,可以在串連執行個體時通過與其相對應的私密金鑰作為登入憑證。
選擇合適的方式串連到ECS執行個體,具體操作,請參見ECS遠端連線方式概述或ECS遠端連線方式概述。
在~/.ssh/authorized_keys
中配置公開金鑰檔案。
在操作之前,您需要明確登入Linux系統的使用者身份,例如使用ecs-user
的身份登入執行個體,就需要為ecs-user
配置公開金鑰。
設定root使用者的公開金鑰
設定非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
如果您要為其他系統使用者綁定金鑰組,請參考以下步驟。
建立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地址)。
更多操作
為同一使用者綁定多個金鑰組(公開金鑰)
使用者家目錄下的.ssh/authorized_keys
檔案支援多行配置,每行添加一個公開金鑰,即可讓多個金鑰組使用同一使用者身份登入。
手動解除綁定金鑰組(公開金鑰)
您可以通過編輯使用者家目錄下的.ssh/authorized_keys
檔案,直接刪除特定的公開金鑰條目。刪除後,對應的私密金鑰將無法用於該使用者的執行個體串連。
通過~/.ssh/config
設定檔簡化ssh串連命令
如果您經常串連到多個不同的執行個體,您可以使用本機~/.ssh/config
設定檔簡化命令,無需每次登入都輸入完整的命令。具體配置方式如下。
實現效果
簡化前:
ssh -i <identity_file_path> -p <ssh_port> <username>@<server_ip>
簡化後:
配置流程
在您的本機編輯或建立~/.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
設定檔中設定的伺服器別名。